-1

我有一个WiX安装程序,它可以完成一些工作,最后启动 RSYNC 安装程序(它是一个 EXE 文件,同时工作没有问题)。

但是卸载时,我也想删除 RSYNC。

<CustomAction Id="InstallRSyncDaemon" FileKey="cwRsyncServer_4.0.5_Installer.exe" ExeCommand="/q" Execute="deferred" Return="ignore" Impersonate="no" />
<CustomAction Id="UninstallRSyncDaemon" FileKey="rsync_uninstall.bat" ExeCommand="[INSTALLDIR]" Execute="deferred" Return="check" Impersonate="no" />
<CustomAction Id="EditConf" FileKey="rsync.bat" ExeCommand="[INSTALLDIR]" Execute="deferred" Return="ignore" Impersonate="no"/>

<InstallExecuteSequence>
  <Custom Action='InstallRSyncDaemon' Before='InstallFinalize'>(NOT remove="ALL")</Custom>
  <Custom Action='EditConf' After='InstallRSyncDaemon'>(NOT remove="ALL")</Custom>
  <Custom Action='UninstallRSyncDaemon' Before='RemoveFiles'>remove="ALL"</Custom>
</InstallExecuteSequence>

我的问题是在卸载过程中,自定义操作“UninstallRSyncDaemon”被跳过:

MSI (s) (58:78) [17:37:40:475]: Skipping action: UninstallRSyncDaemon (condition is false)

我尝试过“已安装”和其他条件,结果相同。

在日志文件的开头,我有:

MSI (c) (9C:80) [17:37:36:772]: PROPERTY CHANGE: Adding ACTION property. Its value is 'INSTALL'.
MSI (c) (9C:80) [17:37:36:772]: Doing action: INSTALL
Action 17:37:36: INSTALL.
Action start 17:37:36: INSTALL.
MSI (c) (9C:80) [17:37:36:772]: UI Sequence table 'InstallUISequence' is present and populated.
MSI (c) (9C:80) [17:37:36:772]: Running UISequence
MSI (c) (9C:80) [17:37:36:772]: PROPERTY CHANGE: Adding EXECUTEACTION property. Its value is 'INSTALL'.

如果我尝试更改为在安装期间启动它的条件,它正在工作,所以对我来说这只是条件的陈述。

但我不明白为什么,这是教程或堆栈溢出答案中总是使用的条件。

4

1 回答 1

0

我认为删除应该是大写的。尝试这个。

REMOVE="ALL"

但它也会在修改和升级中运行。在此处查看有关此情况的更多信息。

于 2013-06-04T06:18:44.007 回答