3 回答
TA贡献1815条经验 获得超13个赞
自动guids和默认属性值
除了Bob Arnson的建议:
维克斯的最新版本允许的GUID是自动生成的几件事情,最显著的组件GUID。它还包括包,产品和补丁代码。
它还允许从显式定义中跳过一些甚至大多数属性值,因为它们中的大多数可以默认为可预测的值。有关示例,请参阅下面的代码段。
自动生成组件GUID是可能的,因为组件GUID在创建后应保持不变,除非安装路径已更改 - 这在此stackoverflow帖子中有所描述。因此,Wix 根据目标路径和其他因素计算GUID。
产品,包和补丁代码通常可以随机创建,因为它们应该是唯一的。
请注意,升级代码是特殊的 - 不应自动生成。在某些情况下,通常希望在版本之间保持稳定,甚至在软件的不同版本和语言之间保持稳定 - 这取决于应用程序设计和版本的实现方式(您可以使用不同的升级代码并仍然实施重大升级,但升级表变得复杂)。
根据经验,升级代码标识“ 相关产品系列 ”,产品代码标识某种安装版本,包代码标识唯一文件。根据定义,具有相同包代码的两个文件被视为同一文件(这可能是神秘错误 - 确保始终自动生成包代码)。
有关自动生成的GUID的详细信息,请查看Wix文档。
简化的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源文件更短和更容易阅读由于去掉了不少“噪音” -这可以说是使他们不容易出错:
terser源文件更易于维护且不易出错,因为更容易看到diff工具的更改和文本越少,错误就越少隐藏
同样,由于所有属性的更新不完整,现有XML元素的复制和粘贴可能导致难以发现错误。属性更少,错误更少。当“手动”使用Wix(不使用XML生成器)时,我会复制并粘贴很多。请注意,Wix编译器和链接器会捕获大多数错误,但错误仍然可以隐藏。
然后,可以从编译器和链接器自动神奇地拾取对默认值的任何更改,使它们更容易传播到使用Wix构建的各处的MSI文件。保持源文件尽可能简单总是好的,但并不简单
重写的默认值在源文件中也很突出,您可以添加注释来解释为什么需要非默认值
其他Wix提示在这里,虽然文章可能有点过时。
- 3 回答
- 0 关注
- 773 浏览
添加回答
举报