gpt4 book ai didi

WiX - Burn 支持双用途 msi 软件包吗?

转载 作者:行者123 更新时间:2023-12-02 02:58:16 24 4
gpt4 key购买 nike

Burn 是否支持根据 these Microsoft guidelines 准备的双用途(每用户或每台机器)MSI 软件包?

我尝试准备这样的程序包,但看起来使用 Burn 创建的 Bootstrap 不会卸载 MSI 程序包,该程序包是在最终用户提升 UAC 权限后按计算机安装的。

Burn 的源代码是:

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"
xmlns:bal="http://schemas.microsoft.com/wix/BalExtension">
<Bundle Version="1.0"
Name="AppNameHere"
UpgradeCode="GuidHere">
<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.HyperlinkLicense" >
<bal:WixStandardBootstrapperApplication LicenseUrl=""
SuppressOptionsUI="yes"
ThemeFile="Customization\Theme.xml"
LocalizationFile="Customization\LangHere.wxl"/>
</BootstrapperApplicationRef>
<Chain>
<PackageGroupRef Id="WindowsInstaller45"/>
<PackageGroupRef Id="NetFx40ClientRedist"/> <!-- Uzywa rozszerzenia WixNetfxExtension do zainstalowania .net -->
<PackageGroupRef Id="vcredist"/>
<MsiPackage Compressed="yes"
SourceFile="MsiFileNameHere"
DisplayInternalUI="yes">
<MsiProperty Name="UPDATEDIR" Value="[UninstallPath]"/>
<MsiProperty Name="WIXBUNDLEKEY" Value="[WixBundleProviderKey]"/>
</MsiPackage>
</Chain>
</Bundle>
<Fragment>
<util:RegistrySearch Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\10.0\VC\VCRedist\x86" Value="Installed" Variable="vcredistkeyx86" />
<util:RegistrySearch Root="HKLM" Key="SOFTWARE\Wow6432Node\Microsoft\VisualStudio\10.0\VC\VCRedist\x86" Value="Installed" Variable="vcredistkeyx64" />
<PackageGroup Id="vcredist">
<ExePackage Id="vcredist_x86"
Cache="no"
Compressed="yes"
PerMachine="yes"
Permanent="yes"
Vital="yes"
SourceFile="Components\vcredist_x86.exe"
DetectCondition="(vcredistkeyx86 AND (vcredistkeyx86 &gt;= 1)) OR (vcredistkeyx64 AND (vcredistkeyx64 &gt;= 1))" />
</PackageGroup>
<PackageGroup Id="WindowsInstaller45">
<ExePackage Cache="no"
Compressed="yes"
PerMachine="yes"
Permanent="yes"
Vital="yes"
SourceFile="Components\WindowsXP-KB942288-v3-x86.exe"
InstallCondition="VersionNT=v5.1 AND NOT VersionNT64 AND VersionMsi &lt; v4.5"
InstallCommand="/quiet /norestart">
<ExitCode Behavior="forceReboot"/>
</ExePackage>
</PackageGroup>
</Fragment>
</Wix>

最佳答案

从 WIX V3.9 开始,答案是合格的“否” - Burn 目前不支持双用途每用户或每机器 MSI 包。

双用途 MSI 包的 ALLUSERS 属性设置为“2”。当您构建引用此类 MSI 包的 WIX Bootstrap 项目时,您应该会看到此类警告:

2>D:\Robert\Documents\Visual Studio 2013\Projects\BurnTest\Bootstrapper\Bundle.wxs(18,0): warning LGHT1133: Bundles require a package to be either per-machine or per-user. The MSI 'D:\Robert\Documents\Visual Studio 2013\Projects\BurnTest\SetupProject\bin\Release\SetupProject.msi' ALLUSERS Property is set to '2' which may change from per-user to per-machine at install time. The Bundle will assume the package is per-machine and will not work correctly if that changes. If possible, remove the Property with Id='ALLUSERS' and use Package/@InstallScope attribute instead.

WIX Bootstrap 项目的构建过程将尝试从链接的包中找出要创建的刻录安装类型(按用户或按计算机)。由于您可以在不同的位置声明每个用户或每台计算机的首选项,以及链接包之间的潜在冲突,因此逻辑很复杂。但一般的想法是,刻录编译器将生成每台计算机的安装,除非链接的软件包之一是每用户的,这会将刻录安装翻转为每用户模式。关键点是创建每用户或每机器包的决定是在构建时做出的。为了正确支持双用途 MSI 软件包,需要将这一决定移至安装时。

关于WiX - Burn 支持双用途 msi 软件包吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23606207/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com