在产品条件之前执行自定义操作

Pet*_*lin 2 windows-installer wix

基本上我需要在安装之前验证某个程序没有运行.这是通过自定义操作完成的,该操作设置了一个属性APPRUNNING:

<CustomAction Id="CheckingAppIsRunning"
          BinaryKey="AppIsRunning"
          DllEntry="AppIsRunning"/>

<Binary Id="AppIsRunning" 
        SourceFile="CustomActions.CA.dll" />
Run Code Online (Sandbox Code Playgroud)

但是在显示的消息中,APPRUNNING似乎是null,也就是说,它根本没有设置(应该是"0"或"1").

<Condition Message="Exit all instances of [APPNAME] before installation (APPRUNNING = [APPRUNNING]).">
    <![CDATA[APPRUNNING = "0"]]>
</Condition>

<InstallExecuteSequence>
    <Custom Action="CheckingAppIsRunning" Before="LaunchConditions" />
</InstallExecuteSequence>
Run Code Online (Sandbox Code Playgroud)

我想在条件检查时不执行自定义操作.自定义操作后执行条件检查有哪些选项?

Yan*_*nko 9

LaunchConditions行动计划在两个运行InstallUISequenceInstallExecuteSequence.只要您只安排自定义操作InstallExecuteSequence,就不会在启动LaunchConditions时设置该属性InstallUISequence.

您应该CheckingAppIsRunning在两个序列中安排自定义操作.您可能还希望使用Execute='firstSequence'属性定义它- 这样它将运行它所遇到的第一个序列.

这就是我的意思,实际上:

<InstallUISequence>
  <Custom Action="CheckingAppIsRunning" Before="LaunchConditions" />
</InstallUISequence>
<InstallExecuteSequence>
  <Custom Action="CheckingAppIsRunning" Before="LaunchConditions" />
</InstallExecuteSequence>
Run Code Online (Sandbox Code Playgroud)

而定义:

<CustomAction Id="CheckingAppIsRunning" BinaryKey="AppIsRunning" DllEntry="AppIsRunning" Execute="firstSequence"/>
Run Code Online (Sandbox Code Playgroud)