簡體   English   中英

檢查VC2015運行時是否已通過Wix Installer安裝,但無法找到32位或64位

[英]Checking VC2015 runtime Installed or not with Wix Installer But Filing to find 32bit or 64bit

<Property Id="VC2015_X86">
    <RegistrySearch Id="VC2015_X86"
                    Root="HKLM"
                    Key="SOFTWARE\Wow6432Node\Microsoft\DevDiv\vc\Servicing\14.0\RuntimeAdditional"
                    Name="Version"
                    Type="raw" 
                    />
     </Property>

該屬性是通過此搜索設置的。 但是由於Wow6432Node搜索,它在32位上失敗。

但是Wix Doc中的RegistrySearch元素表示Win64 YesNoType指示搜索值為“ yes”時在64位注冊表中查找。 當值為“ no”時,搜索將在32位注冊表中查找。 缺省值基於-arch開關設置為Candle.exe的平台或.wixproj MSBuild項目中的InstallerPlatform屬性:對於x86和ARM,缺省值為'no'。 對於x64和IA64,默認值為“是”。

如果我將其更改為以下內容,則可以同時在32位和64位上使用嗎?

<Property Id="VC2015_X86">
    <RegistrySearch Id="VC2015_X86"
                    Root="HKLM"
                    Key="SOFTWARE\Microsoft\DevDiv\vc\Servicing\14.0\RuntimeAdditional"
                    Name="Version"
                    Type="raw" 
                    />
     </Property> 

您的更改已完成一半。 盡管有關於重新分發Visual C ++文件的隱含指導,但我還是建議您避免直接引用Wow6432Node鍵。 相反,您應該使用任何可用的東西來指定32位注冊表視圖。 (為了更好地了解32位注冊表視圖的概念,請在64位計算機上比較常規C:\\ Windows \\ System32 \\ regedit.exe和C:\\ Windows \\ SysWow64 \\ regedit.exe。)

在您的情況下,要查找32位Redist的存在,這意味着使用32位視圖名稱( Key="SOFTWARE\\Microsoft\\DevDiv\\vc\\Servicing\\14.0\\RuntimeAdditional" )指定Key。指定Win64="No"以便搜索將在項目的32位或64位版本中使用配置單元的32位視圖。

如果還想在64位計算機上找到64位Redist,則應在另一個屬性中添加第二個搜索,然后根據對32位版本的需求,顯式指定Win64="Yes"或確保該搜索僅包含在您的項目的64位版本中。 奇怪的是,您無需同時搜索兩者,因為任何給定的.exe或.dll將僅依賴於32位或64位Redist的一個位。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM