相关疑难解决方法(0)

卸载WiX时删除文件

卸载我的应用程序时,我想配置Wix设置以删除原始安装后添加的所有文件.看起来卸载程序只删除了最初从MSI文件安装的目录和文件,并且它保留了稍后在应用程序文件夹中添加的所有其他内容.换句话说,我想在卸载时清除目录.我怎么做?

installer windows-installer custom-action wix

77
推荐指数
6
解决办法
7万
查看次数

安装后启动应用程序

我搜索了一下,发现了一些话题

http://wix.sourceforge.net/manual-wix3/run_program_after_install.htm

安装完成后启动应用程序,打开UAC

但是,我不使用任何ui.只需简单的安装!至今

<CustomAction Id="LaunchApp" Directory="INSTALLDIR" ExeCommand="[SystemFolder]cmd.exe /C MyExe.exe" />

<InstallExecuteSequence>
      <RemoveExistingProducts Before="InstallInitialize" /> 
      <Custom Action="LaunchApp" After="InstallFinalize" />
    </InstallExecuteSequence>
Run Code Online (Sandbox Code Playgroud)

但是当我启动安装程序时,会弹出一个窗口:"请等待Windows配置MyProgram".在它上面只有一个闪烁的光标cmd.exe,当我关闭cmd时,我收到消息:"这个Windows Installer程序包有问题.无法运行此安装完成所需的程序." 虽然计划仍然开放.我怎样才能正确地做到这一点(没有任何UI)?提前致谢!

wix

20
推荐指数
2
解决办法
1万
查看次数

如何在仅在安装或卸载时执行的WiX中执行自定义操作?

我有两个自定义操作,其中一个我想在安装我的产品时执行,另一个在卸载时执行.

我的自定义操作当前在"InstallFinalize"之后从合并模块调用,但安装和卸载都会发生这种情况.我已经尝试添加"NOT INSTALLED AND NOT UPGRADINGPRODUCTCODE"条件,但这给了我一个错误:

错误2762.无法编写脚本记录.交易未开始.

我也尝试附加到其他操作(例如,UnpublishComponents),但我找不到任何安装或卸载独有的操作.

我该如何解决这个问题?

windows-installer custom-action wix uninstall merge-module

14
推荐指数
1
解决办法
2万
查看次数

Wix - 请勿在安装时删除固定任务栏

在安装或主要升级期间,如果用户已将应用程序固定到其任务栏,则在安装完成后,将从\ AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar中删除任务栏快捷方式并在其位置留下空白文件图标(请参见下面的图像链接).单击该图标将提示用户删除,因为它没有任何目标.

http://i.stack.imgur.com/kz1zW.png

我想在安装或运行主要升级时根本不删除任务栏快捷方式.我们每周推出更新,如果任务栏快捷方式在每次更新期间中断,则可能会令人沮丧.

这可能吗?我已经读过有关修改RemoveExistingProducts的值(即从InstallValidate更改为InstallFinalize),但我不确定这是否可行.

谢谢.

installation installer taskbar wix windows-7

14
推荐指数
3
解决办法
2592
查看次数

在Wix中卸载后运行devenve.exe/setup

我正在为MVVM Light安装一个安装程序(MSI,Wix)并遇到问题.我需要在安装和卸载时运行devenv.exe/setup以将模板添加/删除到New Project菜单.虽然我们在安装时确定了语法,但我们无法找到在卸载时运行此语法的正确语法.

这就是我们所拥有的:

<InstallExecuteSequence>
    <Custom Action='UpdateVS2010Templates'
            After='InstallFiles'>VS2010EXISTS</Custom>

    <Custom Action='UpdateVS2010TemplatesUninstall'
            After='RemoveFiles'>REMOVE = "All"</Custom>
</InstallExecuteSequence>
Run Code Online (Sandbox Code Playgroud)

<CustomAction Id="UpdateVS2010Templates"
                Impersonate="no"
                Execute="deferred"
                Directory="INSTALLLOCATION"
                ExeCommand='"[VS10INSTALL]\Common7\IDE\DEVENV.EXE" /SETUP'
                Return='ignore' >
</CustomAction>

<CustomAction Id="UpdateVS2010TemplatesUninstall"
                Impersonate="no"
                Execute="deferred"
                Directory="INSTALLLOCATION"
                ExeCommand='"[VS10INSTALL]\Common7\IDE\DEVENV.EXE" /SETUP'
                Return='ignore' >
</CustomAction>
Run Code Online (Sandbox Code Playgroud)

任何人都可以指出正确的语法是什么?

谢谢!洛朗

wix wix3.5

7
推荐指数
1
解决办法
850
查看次数

Wix:是否可以从自定义操作中手动运行RemoveFolderEx元素?

我想知道是否可以从自定义操作手动运行RemoveFolderEx元素.我猜可能不是,但有人可能知道一种我不知道的方式.

我的问题是我想运行RemoveFolderEx元素,但只在真正的UNINSTALL上,但是我的程序在升级时执行它,因为我在重新安装之前将其设置为uninstall.

我尝试通过这个方法 Wix:条件属性不工作, 但它不起作用,仍然运行时重新安装.

我唯一能想到的是能够从自定义操作中手动设置RemoveFolderEx,我知道我在正确的点运行并且仅在真正的卸载时运行.也许我的自定义操作可以使用c ++ dll,然后手动将命令添加到MSI接口,但如果我走得那么远,那么自己也可以完全编写删除逻辑.

谢谢.尼尔


编辑:我终于得到了这个工作,这是一个示例wix来显示我做了什么.

<Property Id='P.REMOVEDATAFOLDER' Secure='yes' />

<DirectoryRef Id="DATADIR">        
    <Component Id="C.RemoveDataFolder" Guid="myguid" KeyPath="yes">
        <util:RemoveFolderEx On="uninstall" Property="P.REMOVEDATAFOLDER" />
    </Component>
</DirectoryRef>

<CustomAction Id="CA.SetDataFolder" Property="P.REMOVEDATAFOLDER" Value='[DATADIR]' />

<InstallExecuteSequence>           
    <Custom Action="CA.SetDataFolder" Before="ValidateProductID" >(NOT UPGRADINGPRODUCTCODE) AND (REMOVE="ALL")</Custom>
</InstallExecuteSequence>    
Run Code Online (Sandbox Code Playgroud)

在从注册表中读取DATADIR但在CostInitialize操作之前,属性P.REMOVEDATAFOLDER 在真正的卸载时设置.

windows-installer wix

5
推荐指数
1
解决办法
2121
查看次数

如何在wix中进行重大升级时停止并且不卸载Windows服务?

我正在开发一个应该在wix v3.8中安装Windows服务的安装程序.问题是我们需要进行重大升级而不卸载服务只是为了阻止它.

我们在包含服务exe文件的组件中使用ServiceInstall和ServiceControl.有没有办法使ServiceInstall的执行有条件(使用像REMOVE ="ALL"和NOT UPGRADINGPRODUCTCODE这样的条件)所以升级时没有卸载服务(刚刚停止,所以我们可以升级文件)?

一种解决方案是使用自定义操作,但也许有更好的方法?

谢谢!

service wix upgrade

4
推荐指数
1
解决办法
1746
查看次数

Wix自定义卸载操作 - 如何在msi删除文件之前运行

我有一个自定义操作,将文件添加到安装目录.卸载程序时,另一个自定义操作会尝试删除这些文件,以便删除安装目录.

问题是我的自定义卸载操作删除标准安装文件运行,因此安装目录保留在那里,尽管它是空的.

配置看起来类似于:

<CustomAction Id="AddFilesAction" BinaryKey="installerActions" DllEntry="AddFiles" Execute="deferred" Return="check" Impersonate="no" />
<CustomAction Id="CleanupAction" BinaryKey="installerActions" DllEntry="Cleanup" Execute="deferred" Return="check" Impersonate="no" />

<InstallExecuteSequence>
  <Custom Action="CleanupAction" Before="InstallFiles">Installed</Custom>
  <Custom Action="AddFilesAction" After="InstallFiles">NOT Installed</Custom>
</InstallExecuteSequence>
Run Code Online (Sandbox Code Playgroud)

我可以在CleanupActionmsi开始删除安装文件之前运行,以便自定义文件已被删除,msi可以删除主安装目录吗?

installation windows-installer wix wix3.7

3
推荐指数
2
解决办法
1394
查看次数

仅在安装或卸载时执行自定义操作

我正在使用WiX 3.10制作安装程序.我的原始任务是将Postgres文件复制到目标系统,初始化集群,注册服务,启动它并在安装时恢复数据库,以及反向停止服务,将其从系统中删除,并清除集群数据.我编写了两个bat文件,并添加了自定义操作来执行它们以及各个地方描述的一些条件,但它们都没有工作.我已尝试使用和不使用CDATA,已安装,已安装和其他一些变体,但它始终执行这两个操作.

这是我正在尝试的wix文件.

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Product Id="*" Name="Hatred_6" Language="1033" Version="1.0.0.0" Manufacturer="Satan" UpgradeCode="d9602b10-8428-4031-8c82-99288b21377f">
        <Package InstallerVersion="405" Compressed="yes" InstallScope="perMachine"  InstallPrivileges="elevated"/>

        <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
        <MediaTemplate EmbedCab="yes" />

        <CustomAction Id="AAction" Directory="INSTALLFOLDER" Execute="deferred" Impersonate="no" Return="check"
                      ExeCommand="cmd.exe /c &quot;a.bat&quot;">NOT Installed</CustomAction>

        <CustomAction Id="BAction" Directory="INSTALLFOLDER" Execute="deferred" Impersonate="no" Return="check"
                      ExeCommand="cmd.exe /c &quot;b.bat&quot;">Installed</CustomAction>

        <InstallExecuteSequence>
            <Custom Action="BAction" After="InstallFiles" />
            <Custom Action="AAction" After="InstallFiles" />
        </InstallExecuteSequence>

        <Feature Id="ProductFeature" Title="Hatred_6" Level="1">
            <ComponentGroupRef Id="ProductComponents" />
        </Feature>
    </Product>

    <Fragment>
        <Directory Id="TARGETDIR" Name="SourceDir">
            <Directory Id="ProgramFilesFolder">
                <Directory Id="INSTALLFOLDER" Name="Hatred_6" …
Run Code Online (Sandbox Code Playgroud)

windows-installer custom-action wix wix3.10

2
推荐指数
1
解决办法
3213
查看次数

在安装时重新启动,在卸载时不重新启动

我们有一个安装程序,需要在安装时重新启动,但在卸载时也会重新启动。有什么方法可以防止卸载时重新启动吗?

这是我们目前所拥有的:

<InstallExecuteSequence>
  <ScheduleReboot After="InstallFinalize"/>
</InstallExecuteSequence>
Run Code Online (Sandbox Code Playgroud)

提前谢谢了!

windows-installer wix wix3 major-upgrade

1
推荐指数
1
解决办法
922
查看次数