2010-08-13 58 views
0

alo每個人。WiX無條件執行應用程序

我的問題是雙重的。我有一個我一直在研究的WiX項目,並且負責讓它執行程序執行,而不管用戶按下取消,安裝被中止(通過已有的版本)或用戶成功完成安裝。

我目前使用內置的diaglog系統:

<UIRef Id="WixUI_InstallDir" /> 

我現在已經非常成功,在安裝完成後執行應用程序。困難在於應用程序與安裝程序位於同一位置,因此我無法保證它會在哪裏。因此,在安裝成功後,我使用以下方法執行程序:

<InstallExecuteSequence> 
    <Custom Action="PreventDowngrading" After="FindRelatedProducts">NEWPRODUCTFOUND</Custom> 
    <RemoveExistingProducts After="InstallInitialize" /> 
    <Custom Action="PropertyAssign" Before="InstallFinalize">NOT Installed</Custom> 
    <Custom Action="LaunchFile" After="InstallFinalize">NOT Installed</Custom> 
</InstallExecuteSequence> 


    <CustomAction Id='PropertyAssign' Property='PathProperty' Value='[SourceDir][DRIVEREXEC]' /> 
    <CustomAction Id="LaunchFile" Property="PathProperty" ExeCommand='/S' Return="asyncNoWait" /> 

這兩個自定義操作用於在安裝完成後執行應用程序。因此,當程序存在時,我不能分配兩個自定義操作。當兩個自定義操作具有相同的設置時,OnExit =「error」會引發異常。

如何執行應用程序,位置未知 - 但假定與安裝程序位於同一目錄中 - 無條件地執行?

我感謝大家的時間和親切的回覆

回答

1

你可以看看如何運行安裝程序後,應用程序的WiX的文檔:http://wix.sourceforge.net/manual-wix3/run_program_after_install.htm。這將爲您提供進入WiX UI對話框集的指示,您可以根據需要進行調整。

此外,SourceDir是一個非常棘手的事情使用:http://robmensching.com/blog/posts/2010/1/26/StackOverflow-what-does-NameSourceDir-refer-to。理想情況下,您可以啓動安裝的應用程序而不是媒體。

+0

Rob,謝謝你的回覆。我處於不幸的境地,我需要與可能與媒體一起打包的一個或多個可執行文件一起工作。如果是,我必須運行它們。爲了解決這個問題,我在完成時使用了SourceDir,以及一個參數來設置我的位置。 我的結局是在取消,中止等情況下 - 仍然有可執行文件被觸發。你的建議提到了如何讓複選框出現在任何情況下(中止 - 等),但它不告訴我如何告訴安裝程序它在哪裏。我很抱歉,我對此很陌生,可能我錯過了。 – Hewlett123 2010-08-19 15:18:02

+0

我沒有關注你的問題的這一部分,「但它並沒有告訴我如何告訴安裝者它在哪裏」。你能澄清一下嗎? – 2010-08-19 20:00:30

+0

對不起延遲,我非常感謝你和我一起度過的所有的幫助和時間。在某種程度上,我需要安裝者自覺(關於它的位置)。安裝程序需要知道它在磁盤上的位置。這就是我使用SourceDir的原因。 (安裝程序說)我知道我位於c:\ temp \ install,現在從c:\ temp \ install執行installer2。另一方面,如果有人移動安裝程序,比如說c:\ place,我希望安裝程序轉而嘗試從c:\ place執行installer2。 – Hewlett123 2010-08-26 15:24:04