2017-01-10 76 views
0

我試圖啓動軟件我安裝後使用一些參數安裝後執行初始化任務。我只想在第一次安裝之後而不是在升級之後啓動自定義操作。Wix推出安裝軟件後第一次安裝,而不是升級後

以下代碼在第一次安裝和升級後啓動custum操作。

<CustomAction Id="MyAction" 
    Directory="TARGETDIR" 
    ExeCommand="[INSTALL_ROOT]MySoft.exe myarg" 
    Execute="immediate" 
    Return="ignore" 
    Impersonate="yes" /> 
<InstallExecuteSequence> 
    <Custom Action="MyAction" After='InstallFinalize'>(NOT Installed) AND (NOT UPGRADINGPRODUCTCODE) </Custom> 
</InstallExecuteSequence> 

什麼問題?

回答

2

運行MSI並使用msiexec/I [msi]/l * vx [日誌文件的路徑]創建一個日誌,並查看您的自定義操作何時被調用以及日誌對它的說明。

您知道程序是否因爲(例如)需要提升權限而啓動並崩潰?你假設安裝有問題,因爲大概你看不到程序運行的結果,但是如果它崩潰了,你會怎麼知道?日誌會告訴你它是否試圖運行它,並注意說return = ignore意味着即使它失敗,安裝也會繼續運行。

如果「升級後」意味着這是升級MSI,那麼您的條件有誤,因爲在升級時設置了UPGRADINGPRODUCTCODE,而不是在產品升級時設置。如果這是升級設置,則需要WIX_UPGRADE_DETECTED作爲條件。

+0

Thx! WIX_UPGRADE_DETECTED是我所需要的。對於日誌的提示,可以使用thanx進行調試。這[另一篇文章](http://stackoverflow.com/questions/18531272/how-do-i-distinguish-between-a-normal-install-and-an-upgrade-in-wix)也非常有用,以識別不同的場景。 – skuallpa

相關問題