wix - WIX 中的 guid 语法?

标签 wix installation windows-installer

为 WIX 的 wxs 文件中的组件提供 guid 的正确语法是什么?

在我发现的大多数样本中

Guid="00AD2D6E-BF8A-4EA8-BE9A-57380DECD0E6"

但在一些样本中我发现
Guid="{00AD2D6E-BF8A-4EA8-BE9A-57380DECD0E6}"

我更喜欢第二个版本,因为这是由 GuidGen 工具直接生成的。但这是正确的吗?

最佳答案

Component GUIDs: On Component GUIDs and when they should change: Change my component GUID in wix?



自动引导和默认属性值

除了鲍勃·阿恩森的建议:
  • 最新版本的 Wix 允许 GUID 自动生成的 用于一些事情,最重要的是组件 GUID。它还涵盖了封装代码、产品代码和补丁代码。
  • 它还允许 从显式定义 中跳过一些甚至大部分属性值,因为它们中的大多数可以默认为可预测值。有关示例,请参阅下面的代码片段。
  • 自动生成组件 GUID 是可能的,因为组件 GUID 在创建后应保持不变,除非安装路径发生更改 - 这在 this stackoverflow post 中进行了描述。相应地,Wix calculates a GUID 基于目标路径和其他因素。
  • 产品 , 补丁代码 通常是随机创建的。
  • 请注意, 升级代码 是特殊的 - 不应自动生成 。在某些情况下,通常希望在版本之间,甚至在软件的不同版本和语言之间保持稳定 - 这取决于应用程序设计和版本的实现方式(您可以使用不同的升级代码并仍然实现重大升级,但升级表变得复杂)。
  • 根据经验 升级代码 标识“ 相关产品系列 ”,产品代码标识某种已安装版本,包代码标识唯一文件。根据定义,具有相同包代码的两个文件被视为同一个文件(这可能会导致神秘错误 - 确保始终自动生成包代码)。
  • 检查 Wix documentation 以了解有关自动生成的 GUID 的详细信息。

  • 简化的 Wix XML 源文件

    正确使用这些自动生成的 GUID 可以显着简化您的 Wix 源文件:
    <!-- Sample guid below, do not copy paste -->
    <Component Id="File.dll" Guid="{12345678-1234-1234-1234-123456789ABC}">
      <File Id="File.dll" Name="File.dll" KeyPath="yes" Source="..\File.dll" />
    </Component>
    

    相对
    <Component>
      <File Source="..\File.dll" />
    </Component>
    

    两者合计自动的GUID相结合默认属性值产生是更容易阅读由于去掉了很多“噪音”的维克斯XML源文件 - 这无疑让他们 不易出错 :
  • 更简洁的源文件更易于维护且不易出错,因为使用差异工具更容易查看更改,并且存在的文本越少,隐藏的错误就越少
  • 同样,复制和粘贴现有 XML 元素可能会由于所有属性的更新不完整而导致难以找到错误。更少的属性,更少的错误。我在“手动”使用 Wix 时复制和粘贴了很多(不使用 XML 生成器)。请注意,Wix 编译器和链接器会检测到大多数错误,但错误仍然可以隐藏。
  • 然后可以从编译器和链接器中自动获取对默认值的任何更改,使它们更容易传播到使用 Wix 构建的任何地方的 MSI 文件。保持源文件尽可能简单总是好的,但没有更简单的
  • 覆盖的默认值在源文件中也很突出,您可以添加注释来解释为什么需要非默认值

  • 其他 Wix tips here ,尽管文章可能有点过时。

    关于wix - WIX 中的 guid 语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24732761/

    相关文章:

    .net - 使用 WiX 检测 .NET Framework 4.5.1

    c# - 如何检查 msi 文件中是否存在下一条记录?

    java - 带有安装程序/激活程序的 NetBeans 平台模块。如何强制从对话框发出通知

    python - 如何避免anaconda将文件/包安装在C盘?

    visual-studio - 没有添加/删除条目的 Visual Studio 安装项目 MSI

    wix - 使用 Windows Server 2012 时,旧快捷方式未从产品升级开始菜单中删除

    使用 Wix 扩展时,在 Server 2003 上安装 Wix 失败

    c# - 从 VS.NET MSI 安装程序项目为所有用户安装快捷方式

    asp.net - 如何为 .Net 网站、Windows 服务等创建安装程序?

    wix - 使用 msiexec 卸载特定功能