例如我有:
<Component Id='MainExecutable' Guid='0436E0CA-8612-4330-A70D-642910D9F19A'>
<File Id='FoobarEXE' Name='FoobarAppl10.exe' DiskId='1' Source='FoobarAppl10.exe' KeyPath='yes'>
</File>
</Component>
如果那时我创建了一个更新包,我应该为包含FoobarEXE的组件使用相同的GUID吗?我知道Product,UpgradeCode等规则,但其他GUID的规则是什么?它们的范围是什么?
答案 0 :(得分:2)
组件ID版本控制规则很棘手。我只在旧书中找到了真正的解释(仅限德语)。根据您要创建的更新,可以应用几个规则。
更新(仅补丁或添加文件,不允许删除或重定位) 组件ID必须保持不变。
Minor Upgrade(产品代码保持稳定) 它基本上是一个更新,放松了一些规则。要保持清醒你应该 坚持更新或重大升级,这更容易推理。 这里描述product code must be changed时的规则。
重大升级 基本上是卸载(调用MSI操作RemoveExistingProducts)并重新安装。在那里你有充分的自由。
将每个文件,注册表项,环境变量放入一个单独的组件通常是一个很好的建议,因为许多陷阱是由于在次要升级期间无法从组件中删除文件这一事实。但是对于一些tricks,您可以删除整个组件。