基本上我需要在安装之前验证某个程序是否未运行。这是通过自定义操作完成的,该操作设置了属性APPRUNNING
:
<CustomAction Id="CheckingAppIsRunning"
BinaryKey="AppIsRunning"
DllEntry="AppIsRunning"/>
<Binary Id="AppIsRunning"
SourceFile="CustomActions.CA.dll" />
但是在显示的消息中,APPRUNNING
似乎是空的,也就是说,它根本没有设置(应该是“0”或“1”)。
<Condition Message="Exit all instances of [APPNAME] before installation (APPRUNNING = [APPRUNNING]).">
<![CDATA[APPRUNNING = "0"]]>
</Condition>
<InstallExecuteSequence>
<Custom Action="CheckingAppIsRunning" Before="LaunchConditions" />
</InstallExecuteSequence>
我认为在条件检查时不会执行自定义操作。自定义操作后执行条件检查有哪些选项?
答案 0 :(得分:9)
LaunchConditions行动计划在InstallUISequence
和InstallExecuteSequence
中投放。只要您将自定义操作安排到InstallExecuteSequence
,就不会在InstallUISequence
中触发LaunchConditions时设置该属性。
您应该在两个序列中安排CheckingAppIsRunning
自定义操作。您可能还希望使用Execute='firstSequence'
属性来定义它 - 这样它将运行它所遇到的第一个序列。
这就是我的意思,实际上:
<InstallUISequence>
<Custom Action="CheckingAppIsRunning" Before="LaunchConditions" />
</InstallUISequence>
<InstallExecuteSequence>
<Custom Action="CheckingAppIsRunning" Before="LaunchConditions" />
</InstallExecuteSequence>
定义:
<CustomAction Id="CheckingAppIsRunning" BinaryKey="AppIsRunning" DllEntry="AppIsRunning" Execute="firstSequence"/>