我正在阅读wix的教程和手册,并试图找出如何应用安装前检测,比如检测机器上是否安装了Visual Studio 2012和Update 2.
以下是wix源代码,但我不确定注册表项是否是检测的先决条件。
<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:dd="http://schemas.microsoft.com/wix/2005/01/dd">
<!-- Detection keys fragment. -->
<Fragment>
<!-- TARGETDIR should be set by a type 51 CA to the root installation location for all products. -->
<DirectoryRef Id="TARGETDIR">
<!-- Use all variables in the full key path for the auto-generated GUID,
including LANG, since [ProductName] is lang-specific.
-->
<Component Id="Detection_Keys_Reg" Guid="$(autoguid.ComponentGuid(Detection_Keys_Reg,$(var.ProductFamily),$(var.ProductEdition),$(var.VSRegVer),$(var.Lang)))">
<RegistryKey Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\$(var.VSRegVer)\Setup\[ProductName]">
<RegistryValue Id="Detection_Keys_RegKey_1" Name="InstallSuccess" Type="integer" Value="1" KeyPath="yes" />
<RegistryValue Id="Detection_Keys_RegKey_2" Name="SrcPath" Type="string" Value="[SourceDir]" />
</RegistryKey>
</Component>
</DirectoryRef>
<Feature Id="Detection_Keys" Absent="disallow" AllowAdvertise="no" Description="Used to detect product installation" Display="hidden" Level="1" InstallDefault="local" Title="Detection" TypicalDefault="install">
<ComponentRef Id="Detection_Keys_Reg" />
<dd:ExtensionData FeatureGuid="67DC7E25-1836-42AA-A0F8-6E85528D6986" InstallDirectory="TARGETDIR" AllowRunFromSource="no" FeatureGFN="DetectionKeys">Detection Keys</dd:ExtensionData>
</Feature>
</Fragment>
文件夹
中的两个注册表项“HKEY_CURRENT_USER \ Software \ Microsoft \ VisualStudio \ 11.0_Config \ Setup \ Microsoft Visual Studio Ultimate 2012 \”
安装VS2012后,确实存在(但不在HKLM中)。我不明白一些标签(仍在阅读手册)
所以问题是: 这是检测吗? 2.当所需软件不存在时,如何编写一些弹出消息。
您能为此目的提供一些典型的样品吗?
谢谢!
答案 0 :(得分:1)
1.Registry用于VS / Update Detection的密钥
您可以使用以下注册表进行检测,其值为UpdatedVersion = CurrentBuildNumber = 11.0.60315对于VSUpdate2
注册表项 HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \微软\ DevDiv \ VS \维修\ 12.0 \专业
2.如果您打算搜索VSUpdate2,则需要使用registrysearch标记,这将为您搜索该值。一旦更新了值,您就可以在Managed UX中弹出自定义逻辑
答案 1 :(得分:1)
尝试在Condition
元素中使用Product
元素。引用条件元素的WiX文档:在Fragment或Product元素下,条件成为LaunchCondition条目。
如果条件失败,安装将中止,显示您希望它显示的消息。
一个非常简单的例子:
<Condition Message="Minimum 1 GB of RAM required. Aborting installation.">
<![CDATA[Installed OR PhysicalMemory >= 1024]]>
</Condition>
如果您想使用注册表项,请使用RegistrySearch
元素设置属性,如下所示:
<Property Id="TEST">
<RegistrySearch Id="TestRegKey"
Root="HKLM"
Key="Software\TestKey"
Name="Version"
Type="raw" />
</Property>
现在,您可以在Condition的内部文本中使用此属性。