wix 生成新的升级代码

标签 wix wix3.5 wix3.6 wix3.7

我的项目需要能够同时安装 2 个或更多版本。 据我所知,我找到的解决方案是为安装程序的每个版本更改升级代码。

但是我想自动执行此操作。在常规 GUID 中,我只使用“*”,但这不适用于升级代码。 有没有办法在每个 Wix 预构建或任何其他解决方案中生成新的升级代码?

<?xml version="1.0" encoding="utf-8"?>
<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" xmlns:netfx="http://schemas.microsoft.com/wix/NetFxExtension">
  <Bundle Name="Prog" Version="1.2.1.16" Manufacturer="Gilad Corporation" UpgradeCode="{7E71F945-BA46-4872-A6B2-AF992FFDF2D0}">
    <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense">
      <bal:WixStandardBootstrapperApplication LicenseFile="..\SetupProject\Gilad.rtf" />
    </BootstrapperApplicationRef>
    <Chain>
      <!-- TODO: Define the list of chained packages. -->
      <PackageGroupRef Id="Netfx45FullPackage" />
    </Chain>
  </Bundle>

最佳答案

只是为了回答“如何自动生成 UpgradeCode”的问题,如果你使用的是 msbuild,你可以在你的项目中做这样的事情:

<PropertyGroup>
  <NewUpgradeCode>$([System.Guid]::NewGuid())</NewUpgradeCode>
</PropertyGroup>

<DefineConstants>NewUpgradeCode=$(NewUpgradeCode)</DefineConstants>

在 bundle 中:

<Bundle Name="!(bind.PackageName.Package)"
        Version="!(bind.PackageVersion.Package)"
        Manufacturer="!(bind.PackageManufacturer.Package)"
        UpgradeCode="$(var.NewUpgradeCode)">

我实际上在一个类似模板的包中使用它来打包一些一次性包,我不希望它们相互关联。但是,我仍然希望他们有升级代码,以备日后需要升级时使用。

我不能说这是否是该用例的最佳解决方案,但似乎可行。

关于wix 生成新的升级代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23529029/

相关文章:

deployment - Burn 和 WiX - 现状和文档

.net - 将参数从 Bootstrap 传递到MSI bundle

.net - WIX:更改添加/删除程序图标不起作用

wix - Installshield或Wix

WIX 错误 2716 : Couldn't create a random subcomponent name for component 'CopySTST'

.net - 如何使用 WiX 包安装 .NET 4.5?

wix - 在安装结束时打开 readme.txt 在 WiX 中失败

wix - 如何使用 Wix 检查 .net 5(版本 3.11)

Wix:是否有任何 wix 命令来创建数据库用户?

windows - 使用wix工具集安装多个exe