[英]wix 3.8 silent install - ui level 2
我想创建一个只安装静默的WIX安装程序(3.8)。
我正在使用附加的Wix文件来演示我的问题。
在
UILevel = 2
<InstallExecuteSequence>
<FindRelatedProducts Before="LaunchConditions">UILevel=2</FindRelatedProducts>
</InstallExecuteSequence>
我将UI级别设置为2根据:msdn.microsoft.com/en-us/library/aa372096%28v=vs.85%29.aspx然后它是:“INSTALLUILEVEL_NONE 2完全静默安装。”
到现在为止还挺好。 我可以安装“产品”,它只是一个空目录。 当我将产品的版本设置为:Version =“1.1.0.0”并且想要进行重大升级时,一切都运行正常。 当我查看程序时,Microsoft的一个功能“工具”如下所示:
我看到两个版本(版本1.0.0.0和1.1.0.0),这不是我预期的Wix安装程序应该做的。
当我删除
<InstallUISequence>
<FindRelatedProducts Before="LaunchConditions">UILevel=2</FindRelatedProducts>
</InstallUISequence>
<InstallExecuteSequence>
<FindRelatedProducts Before="LaunchConditions">UILevel=2</FindRelatedProducts>
</InstallExecuteSequence>
从Wix脚本开始,在将wix脚本更改为1.1.0.0并再次进行主要升级之后安装版本1.0.0.0及更高版本,我只在程序中看到一个版本(1.1.0.0)来自Microsoft的一个功能“工具”(windows.microsoft) .com / zh-CN / windows / uninstall-change-program#uninstall-change-program = windows-7)这是我期望Windows安装程序应该做的。
所以我的问题是:脚本中缺少什么或者错误(Microsoft的一个功能“工具”在重大升级后显示2个版本)Wix脚本:
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Name="SetupProject1" Language="1033" Version="1.1.0.0" Manufacturer="asdf" UpgradeCode="BE170BF6-0C06-4A50-B81B-CDF6609FAD5A">
<Package InstallerVersion="200" Compressed="yes" InstallScope="perUser" InstallPrivileges="limited" />
<MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." Schedule="afterInstallInitialize" />
<MediaTemplate />
<InstallUISequence>
<FindRelatedProducts Before="LaunchConditions">UILevel=2</FindRelatedProducts>
</InstallUISequence>
<InstallExecuteSequence>
<FindRelatedProducts Before="LaunchConditions">UILevel=2</FindRelatedProducts>
</InstallExecuteSequence>
<Feature Id="ProductFeature" Title="SetupProject1" Level="1">
<ComponentGroupRef Id="ProductComponents" />
</Feature>
</Product>
<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="LocalAppDataFolder">
<Directory Id="INSTALLFOLDER" Name="SetupProject1" />
</Directory>
</Directory>
</Fragment>
<Fragment>
<ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
<Component Id="test" Guid="D6527568-4C76-493B-AF1F-9E973723E773"
SharedDllRefCount="no" KeyPath="no" NeverOverwrite="no" Permanent="no" Transitive="no"
Win64="no" Location="either">
<CreateFolder/>
<RemoveFolder Id="ProductComponents" On="uninstall"/>
<RegistryValue Root="HKCU" Key="Software\MyFantasyCompany\MyApplicationName" Name="installed" Type="integer" Value="1" KeyPath="yes"/>
</Component>
</ComponentGroup>
</Fragment>
</Wix>
首先,没有WiX脚本这样的东西。 WiX不是命令式编程语言,它是一种声明性语言。
您的主要升级失败,因为FindRelatedProducts上的条件评估为false,这意味着它永远不会检测到先前MSI的ProductCode并将其作为升级的一部分删除。
如果您真的只想要静默安装,为什么不从安装程序中省略UI? 就个人而言,我不知道你为什么要这样做而且它没有遵循既定的最佳实践。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.