2010-11-04 56 views
0

使用Wix,我想運行一個可執行文件(即正在安裝)並捕獲返回值。我沒有問題通過運行可執行文件:從程序執行結果wix?

<CustomAction Id="UpgradeDBFromExe" FileKey="UpgradeDB.exe" ExeCommand="/update" Execute="deferred" Impersonate="no" Return="ignore"/> 

但我不知道如何捕獲返回值。如果我將回車更改爲「檢查」,那麼在安裝程序回滾(不是我想要發生的情況)時出現故障,而是稍後檢查此結果(可通過屬性推測)並顯示警告。我的想法是使用CustomAction腳本調用可執行文件並將結果存儲爲屬性,但這似乎很麻煩。有沒有更好的方法來做到這一點?

回答

2

我會認爲這個CustomAction會對系統進行更改,因此需要privs,並且因爲延期/沒有模擬而被安排在那裏。因此,MSI不提供設置屬性的方法,而且這是一個EXE自定義操作,它不在過程中。如果您使用WiX Quiet Execute Custom Action模式,您可以捕獲stdout並記錄它,但這只是關於它。如果您使用了DLL自定義操作類型,則可以檢查UILevel屬性,並可以選擇彈出一個MSI MessageBox,詢問用戶是否要繼續,並基於該信息可以返回成功或失敗,但作爲EXE,您會遇到困難。

另一種方法是有一個驗證什麼EXE做了執行行動陸續自定義操作運行在UI序列,併爲成功/失敗的屬性,然後驅動一些UI掉這一點。我唯一擔心的是現在安裝回來已經太晚了,用戶往往不會看到你放在他們面前的東西。