![]() |
1
5
Windows Installer实际上支持 . 它的意思是“安装但不注册组件”: http://msdn.microsoft.com/en-us/library/aa368007(VS.85).aspx 我刚刚用WIX测试过,它似乎是一个空白的GUID条目(即没有自动生成的GUID)。还记得1:1的规则吗 和 指南 :
总之,GUID引用统计组件的安装密钥路径,而不是文件(该文件可能会移动),但随后该文件通过新GUID具有新标识(请考虑不同文件夹中具有相同名称的两个文件,它们是不同的文件,不同的标识)。 您还可以重命名安装文件夹(理想情况下,这意味着所有组件guid也应该更改)。RemoveFile表概念可用于在安装和/或卸载时删除尚未注册为组件的文件(例如生成的文件)。 更新 (2018年8月):只想补充一点,如果应用程序依赖于 LoadLibrary / LoadLibraryEx 或者任何类似的构造 硬代码 |
![]() |
2
0
更改组件的id并使用有效的GUID应该可以使事情正常进行。 |
![]() |
3
0
简单的回答是: 当然,您必须添加一件事:在每次过度安装或卸载(“重新安装或修补或删除”)或主要升级之前删除所有文件。 您可以在自定义操作中执行此操作,即使使用CMD.exe/c RD/S/Q。。。。 (当然,自定义代码比这更优雅) 如果你做得好,你可以设法有相当简单的设置没有所有的陷阱,微星通常有。 当然,如果一个文件一个文件地递归删除整个目录,这会更容易。 我还没有尝试过,但我会:拥有没有GUID的“动态”组件和普通组件,然后提供补丁。从理论上讲,这应该是可行的,而且对于因补丁之间的文件集高度变化而导致的大量补丁问题,这将是一个很好的解决方法。 |
![]() |
4
0
1. 事实上,没有guid的组件是真正的“动态文件链接”方法,常常被一些工具或人员错误地称赞。 其他“方式”: 在我看来,这不是动态的,因为如果你是动态的,你就做错了: 2a。生成每次都是完全随机的guid =>错误算法 2b。仅在第一次创建组件时生成guid,并对要打包到新组件中的新资源实现智能“差异”识别 =>唯一有效的文件树同步方法。但是你可以在这里做很多错事。。。 |