在Azure DevOps中为Wix MSI文件生成GUID

时间:2019-03-26 15:31:28

标签: .net git wix azure-devops guid

我正在为Web服务器应用程序和Sitecore前端应用程序设置Wix安装程序。我的问题不是特定于Web服务器或Sitecore。我的问题是关于Wix,以及如何连续使用它。

1)Wix要求每个文件和产品本身都有GUID。我需要在每次构建时更新Wix文件中的每个GUID吗?在Git仓库中,可能会有很多变化。

2)如果在CD服务器(Azure DevOps)上的每个分支(开发,暂存和母版)进行构建时都必须更新GUID,如何在Azure DevOps中使用新的GUID更新Wix文件? / p>

我们真正想要的是能够在我们的3台服务器(开发服务器,登台服务器和主服务器)中的每一个上构建,发布,部署以及潜在地回滚到最新的良好版本。我原本以为我们只是在部署步骤中复制文件,但是我受命去构建一个MSI安装程序,因为它更干净并且可以始终轻松地回滚错误的安装。如果您认为Wix是错误的工具或有更好的方法,也请大声说出来。 Wix看起来似乎太冗长了:基本上每个文件都有一个组件,每个文件都有GUID。

1 个答案:

答案 0 :(得分:0)

  

产品,包装,升级代码 :您可以将WiX's auto-GUIDs用于组件(对于大多数组件)。 Using auto-GUIDs significantly reduces WiX source complexity Is it safe

     

您需要管理的 Product Code Upgrade Code 。在大多数情况下,您会   更改每个版本的产品代码和包装代码。软件包代码可以设置为在生成时自动生成。实际上,如果仅使用主要升级,则产品代码也可以。 Nice summary from Flexera上的产品,包装和升级代码。


Hello WiX :有一个WiX Visual Studio Hello World example here。它应该向您展示使用WiX和Visual Studio编译工作设置的基础知识。 There are also a bunch of quick start tips for WiX here(许多链接到示例)。


自动魔术 :您可以按照以下说明使用WiX的自动引导功能:Syntax for guids in WIX?。您只需为WiX能够自动神奇地管理GUID的组件省去硬编码的GUID。

了解组件GUID :此实用的组件GUID如何工作的描述可能有助于更好地理解它们:Change my component GUID in wix?

以下是其他信息来源:

RoX Mensching,WiX创建者

Flexera


Azure DevOps :我不使用此环境,但是如果您使用自动组件GUID,则通常只需要更新产品代码和产品每个版本的版本-我可能忘记了一些东西。您可以将Package Code设置为在生成时自动生成,因为对于每个文件来说,Package Code都是唯一的(每个生成的新文件都是如此,因此只需自动生成)。许多人还将产品代码设置为自动生成,因为他们只使用主要升级。

我从未真正需要它,但是您应该能够将值传递给WiX源内的编译器变量,这意味着您可以将新版本和产品代码(或仅是版本)传递给 {{1 }} candle.exe 。另请参见下面的链接(msbuild)。会尽快尝试挖掘出更好的一个。


某些链接