如果已经安装了以前版本的应用程序,我希望我的安装失败。
我正在尝试在RegEdit文件中搜索UpgradeCode。升级代码的值名称是“BundleUpgradeCode”。但是,即使regedit中没有条目,Bootstrap的日志也会将条件值返回true。我不确定会出现什么问题。
<util:RegistrySearchRef Id="SearchForInstaller" />
<util:RegistrySearch Id="VSTORuntimeTest" Root="HKLM" Key="SOFTWARE\Microsoft\VSTO Runtime Setup\v4R\" Value="VSTORFeature_CLR40" Variable="VSTORFeature"/>
<util:RegistrySearch Id="VSTORuntimeVersionV4R" Root="HKLM" Key="SOFTWARE\Microsoft\VSTO Runtime Setup\v4R\" Value="Version" Variable="VSTORVersionV4R"/>
<util:RegistrySearch Id="VSTORuntimeVersionV4" Root="HKLM" Key="SOFTWARE\Microsoft\VSTO Runtime Setup\v4R\" Value="Version" Variable="VSTORVersionV4"/>
<util:RegistrySearch Id="DotNetTest" Root="HKLM" Key="SOFTWARE\Microsoft\Net Framework Setup\NDP\v4\Client" Value="Install" Variable="DotNetInstall"/>
<util:RegistrySearch Id="DotNetVersion" Root="HKLM" Key="SOFTWARE\Microsoft\Net Framework Setup\NDP\v4\Client" Value="Version" Variable="DotNetVersion"/>
<Chain>
<ExePackage Id="dotNetFx40_Client_x86_x64" SourceFile="$(var.PreReqPath)\DotNetFX40Client\dotNetFx40_Client_x86_x64.exe" PerMachine="yes" Cache="no"
Compressed="no"
DownloadUrl="http://download.microsoft.com/download/7/B/6/7B629E05-399A-4A92-B5BC-484C74B5124B/dotNetFx40_Client_setup.exe"
Permanent="yes"
InstallCommand="/q /norestart"
DetectCondition="NOT DotNetInstall"
InstallCondition="NOT DotNetInstall OR NOT (DotNetVersion >=v4.0.30319)" />
<ExePackage Id="VSTORuntime" SourceFile="$(var.PreReqPath)\VSTOR40\vstor_redist.exe" Permanent="yes" Vital="yes" Cache="no" Compressed="no"
DownloadUrl="http://go.microsoft.com/fwlink/?LinkId=158917"
PerMachine="yes"
InstallCommand="/q /norestart"
DetectCondition="VSTORFeature"
InstallCondition="NOT VSTORFeature OR NOT (VSTORVersionV4R >=v10.0.40303) OR NOT (VSTORVersionV4 >=v10.0.21022)" />
<MsiPackage SourceFile="$(var.AEMSetup.TargetPath)" Vital="yes" Compressed="no" Id="WordAddIns" DisplayInternalUI="yes"/>
</Chain>
</Bundle>
<Fragment>
<util:RegistrySearch Id="SearchForInstaller" Variable ="BundleUpgradeCode" Root="HKLM" Key="SOFTWARE\Wow6432Node\Microsoft\Windows" Result="exists" />
<bal:Condition Message="Another version of this product is already installed. Installation of version cannot continue. To configure or remove the existing version of this product, use Add/Remove Programs in Control Panel." >BundleUpgradeCode</bal:Condition>
</Fragment>
[0E98:0390] [2013-06-18T13:22:49] i000:设置字符串变量 'WixBundleName'重视'Avanade估算模型 - v3.4.3' [0E98:0390] [2013-06-18T13:22:49] i100:检测开始,3个包 [0E98:0390] [2013-06-18T13:22:49] i000:设置字符串变量 'DotNetInstall'值为'1'[0E98:0390] [2013-06-18T13:22:49] i000: 将字符串变量'DotNetVersion'设置为值'4.5.50709' [0E98:0390] [2013-06-18T13:22:49] i000:设置数值变量 'BundleUpgradeCode'到值1 [0E98:0390] [2013-06-18T13:22:49] i000: 将字符串变量'VSTORFeature'设置为值'1' [0E98:0390] [2013-06-18T13:22:49] i000:设置字符串变量 'VSTORVersionV4'值为'10 .0.40303' [0E98:0390] [2013-06-18T13:22:49] i000:设置字符串变量 'VSTORVersionV4R'价值'10 .0.40303' [0E98:0390] [2013-06-18T13:22:49] i102:检测到的相关捆绑: {4edb6855-8f5b-438b-9a6b-4598e7083cd7},输入:升级,范围: PerMachine,版本:3.4.2.0,操作:MajorUpgrade [0E98:0390] [2013-06-18T13:22:49] i052:条件'不是DotNetInstall' 评估为假。 [0E98:0390] [2013-06-18T13:22:49] i052:条件 'VSTORFeature'评估为真。 [0E98:0390] [2013-06-18T13:22:49] i101:检测到的包裹: dotNetFx40_Client_x86_x64,state:Absent,cached:None [0E98:0390] [2013-06-18T13:22:49] i101:检测到包:VSTORuntime, state:Present,cached:无[0E98:0390] [2013-06-18T13:22:49] i101: 检测到的包:WordAddIns,状态:存在,缓存:完成 [0E98:0390] [2013-06-18T13:22:49] i052:条件'BundleUpgradeCode' 评估为真。 [0E98:0390] [2013-06-18T13:22:49] i199:检测 完成,结果:0x0
任何帮助将不胜感激。在此先感谢。
答案 0 :(得分:1)
BundleUpgradeCode
变量将从 RegistrySearch 返回1。据我所知,如果注册表项可用,我们可以考虑安装以前的版本。在这种情况下,您需要设置
(BundleUpgradeCode=0) or Not (BundleUpgradeCode=1)
评估条件错误。这样安装程序将失败并显示Condition消息。
<bal:Condition Message="Another version of this product is already installed. Installation of version cannot continue. To configure or remove the existing version of this product, use Add/Remove Programs in Control Panel." >Not (BundleUpgradeCode=1)</bal:Condition>
我怀疑您的注册表搜索条件不正确。为什么使用Wow6432Node,因为 RegistrySearch 具有属性“Win64”
答案 1 :(得分:0)
尝试搜索SOFTWARE \ Microsoft \ Windows而不是SOFTWARE \ Wow6432Node \ Microsoft \ Windows。在这种情况下你不需要给WOW6432Node