2016-01-18 57 views
1

我有一個WIX安裝程序,我還需要安裝VC++ 2015運行時可執行文件。我正在使用vcredist_x64.exe而不是合併模塊(see this thread)。在我的msi使用自定義操作完成安裝應用程序後,我可以成功啓動vcredist_x64.exe ...但是,我想要執行的操作是首先檢查運行時文件是否已經存在。如果他們這樣做,那麼我會完成而不運行vcredist_x64.exe。否則,我將運行自定義操作以安裝運行時。退出WIX條件消息

它採取了一些挖掘,但我能找到的是2015年的運行時間有如下注冊表項:

HKEY_LOCAL_MACHINE \ SOFTWARE \ WOW6432Node \微軟\ VisualStudio的\ 14.0 \ VC \運行時\ x64的

已安裝值如果它們存在。

所以,在我.wxs文件我有以下注冊表搜索:

<!-- Visual C++ 2015 x64 --> 
<Property Id="VCREDISTRUNTIMES2015INSTALLED"> 
    <RegistrySearch Id="VCREDISTRUNTIMES2015SEARCH" Root="HKLM" Key="SOFTWARE\WOW6432Node\Microsoft\VisualStudio\14.0\VC\Runtimes\x64" Name="Installed" Type="raw" /> 
</Property> 

現在,我想要做的是顯示在我的退出對話的消息,其表示,如果運行時AREN」檢測到後,它會啓動安裝程序以在退出時安裝它們。類似這樣的:

<Property Id="WIXUI_EXITDIALOGOPTIONALTEXT" Value="Visual C++ Redistributable for Visual Studio 2015 is Required. Installation will proceed on exit."> 
    <Condition>VCREDISTRUNTIMES2015INSTALLED</Condition> 
</Property> 

但是,這不起作用。我在條件標籤上看到一個錯誤,項目不會構建。假設我的註冊表搜索設置正確,有人可以告訴我如何正確地添加一個條件消息在我的退出對話框?謝謝!

+0

如果你這樣做(我會使用WiX引導程序代替),請確保以下方案不會導致重新安裝VC運行時。 1)安裝你的應用程序。 2)卸載VC運行時。 3)卸載你的應用程序。 –

+0

@TomBlodget我明白你在說什麼。但是,我試過你的用例,它似乎仍然工作正常。如果我安裝我的應用程序(使用VC運行時),然後卸載VC運行時,然後卸載我的應用程序......它不會在卸載時重新啓動VC運行時安裝程序。我有點期待它會,但它只是卸載我的應用程序,這就是全部。 – andyopayne

回答

1

回答我自己的問題......但是這裏有。事實證明,我的註冊表搜索很好......但我需要使用「SetProperty」。所以,像這樣:現在

<SetProperty Id="WIXUI_EXITDIALOGOPTIONALTEXT" After="AppSearch" Value="The Visual C++ Redistributable Package for Visual Studio 2015 is Required. Installation will now install run-time components that are required to run C++ applications built using Visual Studio 2015."> 
    NOT VCREDISTRUNTIMES2015INSTALLED 
</SetProperty> 

,如果VCREDISTRUNTIMES2015INSTALLED爲空(或假的),那麼它會顯示在對話框中退出的消息。否則,將不會顯示消息。希望有所幫助。