2012-07-26 82 views
2

之前執行自定義操作基本上我需要驗證某個程序在安裝之前沒有運行。這是通過自定義操作,它設置一個屬性來完成,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> 

我想在條件檢查時不會執行自定義動作。自定義操作後執行條件檢查的選項有哪些?

回答

8

LaunchConditions行動計劃運行在InstallUISequenceInstallExecuteSequence。只要您僅將自定義操作的時間安排爲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"/> 
+0

謝謝,就是這樣! – 2012-07-26 16:02:35