3

基本上我需要在安装之前验证某个程序没有运行。这是通过设置属性的自定义操作完成的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>

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

4

1 回答 1

10

LaunchConditions操作计划在InstallUISequence中运行InstallExecuteSequence。只要您将自定义操作安排为InstallExecuteSequenceonly,该属性就不会在 LaunchConditions 被触发时设置InstallUISequence

您应该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"/>
于 2012-07-26T13:00:44.133 回答