2017-08-17 249 views
0

我試圖安裝Visual C++ 2013與引導程序,所以捆綁標籤中,我使用下面的代碼安裝Visual C++ 2013如下如何檢查visual C++ 2013是否安裝在bootstrapper(wix)中?

<ExePackage Id="VC2013" Cache="no" Compressed="no" PerMachine="yes" Permanent="yes" Vital="no" InstallCommand="/q" SourceFile=".\vcredist_x862013.exe" /> 

目前它總是會安裝,無論是否已安裝或不,我如何檢查它是否安裝?

+0

爲什麼這是一個問題嗎?當然,vcredist重新運行時會做正確的事情。 –

+0

我認爲它每次都要重新安裝,這需要花費太多時間進行安裝過程 –

回答

2

在你的包,加上下面幾行:

<util:RegistrySearch Id="VCRedistTest64" Root="HKLM" Key="SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{GUID_HERE}" Result="exists" Variable="VCR64Present" Win64="yes"/> 
<util:RegistrySearch Id="VCRedistTest32" Root="HKLM" Key="SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{GUID_HERE}" Result="exists" Variable="VCR32Present" Win64="no"/> 

更換{GUID_HERE}標籤與正確的GUID爲Visual C++ 2013年爲了找到這個,一臺機器上使用Visual C++已經安裝,打開你的註冊表並導航到:

HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\ 

在這個關鍵會有幾個子項,其中每個子項對應於當前系統安裝的軟件包。找到與Visual C++ 2013相對應的鍵,然後複製鍵名,這是您需要插入到上面的代碼中的GUID。

最後,您Exepackage元素更改爲:

<ExePackage Id="VC2013" Cache="no" Compressed="no" PerMachine="yes" Permanent="yes" Vital="no" InstallCommand="/q" SourceFile=".\vcredist_x862013.exe" DetectCondition="(VCR32Present OR VCR64Present)/> 

這將允許Windows檢測,如果已經安裝了Visual C++,並會阻止你的安裝者重新安裝。

此外,添加以下到頂級「維克斯」標籤:

xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"