gpt4 book ai didi

WiX Bootstrap

转载 作者:行者123 更新时间:2023-12-04 21:43:25 28 4
gpt4 key购买 nike

我正在尝试为简单的 .NET WPF C# 应用程序创建安装程序。我使用的是 VS 2013 和 WiX 3.10.2。按照 Wix Tutotial/.NET/Bootstrapping 中的步骤,我创建了一个 Boostrap.exe,它链接 .NET Web 安装程序和应用程序 Setup.msi。

编辑:我的目标是了解如何针对小更新、小升级和主要升级方案配置 WiX Bootstrap 和安装项目。

开箱即用,当我运行全新安装时,一切似乎都运行良好。但是,当我在现有安装上运行全新构建的 Bootstrap.exe 时,“应用程序和功能”中会出现重复的条目,并且应用程序目标位置中没有文件发生更改 - 与相同条目应保留在“应用程序和功能”中的预期相反。应更新功能和目标位置。 编辑:看起来可能没有办法更改 REINSTALLMODE?

如果我添加产品 ID,然后更改安装版本(次要升级),Bootstrap 会失败并显示用户取消安装?日志文件显示“错误 0x80070642:无法执行 MSI 包的次要升级。” 编辑:在 MSI 日志中,SecureRepair 失败,错误代码为 39439E438(?),可能是因为存储的哈希值与当前的不匹配...但这应该是小升级 MSI 中的预期,对吗?

Boostrapper 和安装 WiX 项目之间是否有推荐的配置,以便可以正确处理小更新、次要升级和主要升级用例,或者 WiX Bootstrapper 是否仅支持主要升级?

我将继续调查,并发布我的调查结果的更新;

非常感谢任何提示,谢谢!

以下是我从 WiX 向导生成的代码中几乎没有更改的源文件:

--- 产品.wxs ---

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Name="SetupProject1 1.0.0.0" Language="1033" Version="1.0.0.0" Manufacturer="Acme" UpgradeCode="4c8a8cbf-e3d0-410c-8a8d-7e67eb4e7ff7">
<Package InstallerVersion="200" Compressed="yes" InstallScope="perUser" InstallPrivileges="limited" />

<MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
<MediaTemplate />

<Feature Id="ProductFeature" Title="SetupProject1" Level="1">
<ComponentGroupRef Id="ProductComponents" />
</Feature>
</Product>

<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="LocalAppDataFolder">
<Directory Id="AcmeFolder" Name="Acme">
<Directory Id="INSTALLFOLDER" Name="WpfApplication1" />
</Directory>
</Directory>
</Directory>
</Fragment>

<Fragment>
<ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
<Component Id="ProductComponent" Guid="8CA0B70F-39DA-4B4B-9104-46C58E26FCF4">
<CreateFolder/>
<RemoveFolder Id="RemoveAcmeFolder" Directory="AcmeFolder" On="uninstall"/>
<RemoveFolder Id="RemoveINSTALLFOLDER" On="uninstall" />
<RegistryValue Root="HKCU" Key="Software\Acme\WpfApplication1" Name="Version" Type="string" Value="[ProductVersion]" KeyPath="yes" />
<File Source="$(var.WpfApplication1.TargetPath)" KeyPath="no" />
</Component>
</ComponentGroup>
</Fragment>

--- Bundle.wxs ---

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:bal="http://schemas.microsoft.com/wix/BalExtension">

<Bundle Name="Bootstrapper1 1.0.0.0" Version="1.0.0.0" Manufacturer="Acme" UpgradeCode="e1092cbb-9134-42fc-a9f2-652f95f361fd">
<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" />

<Chain>
<MsiPackage Name="Acme Setup" SourceFile="$(var.SetupProject1.TargetPath)" Vital="yes" />
</Chain>
</Bundle>

最佳答案

  • 如果您更改可执行文件,请增加其版本号。 Windows Installer 假定具有相同版本的文件是相同的。

  • 要升级 .msi 软件包,请作为主要升级(典型)或次要升级的一部分增加其版本号。

  • 要升级 bundle ,请增加其版本号。默认情况下,Burn 会保留安装的相同版本的 bundle 。

关于WiX Bootstrap ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37933880/

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