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

时间:2016-09-10 11:27:02

标签: wix windows-installer custom-action wix3.10

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

这是我现在正在尝试的wix文件。

$0

bat文件包含dir> a.txt和dir> b.txt所以我可以看看他们是否真的被执行了。 这有点令人沮丧,我误解了什么吗?

1 个答案:

答案 0 :(得分:7)

条件应放在Custom元素内,而不是CustomAction。此外,卸载期间没有 InstallFiles 操作。请改用 RemoveFiles

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

<InstallExecuteSequence>
    <Custom Action="AAction" After="InstallFiles">NOT Installed</Custom>
    <Custom Action="BAction" Before="RemoveFiles">Installed</Custom>
</InstallExecuteSequence>