我正在为客户/服务器应用程序编写几个安装包。 我正在使用Wix Toolkit,如建议的那样,每个DLL都被包装为其自己的组件,具有唯一的ID。
有一些常见的DLL需要在两个包中安装。 这些DLL应该具有相同的组件GUID还是在每个包中都应该不同?
有一些常见的DLL需要在两个包中安装。 这些DLL应该具有相同的组件GUID还是在每个包中都应该不同?
但实际上这是把事情说反了 - 如果你有两个安装程序将同一个DLL安装到相同的位置,它们必须是同一组件的一部分。文件的位置(以及其名称、内部位、版本等)非常重要。
关于我的回答的第一行,考虑到你计划要做的事情——如果服务器已经安装(DLLs在服务器目录下),然后客户端被安装,那么这些DLLs将不会存在于GAC中,因此客户端应用程序将无法工作。
已安装的组件通过它们的GUID和keypath进行识别。
如果两个软件包都将组件安装到相同位置,则重要的是两个软件包使用相同的GUID,以便正确地引用计数该组件。
如果两个软件包将组件安装到不同位置,则无论GUID是否相同,它们都将被分别管理,因为keypath不同。在这种情况下,GUID是否相同并不重要。
结论:您应该保持GUID相同。
顺便说一句,wix鼓励您通过将其编译成wixlib并在构建不同的安装程序包时使用该wixlib来共享组件定义。这类似于创建DLL,然后在不同的应用程序中使用该DLL。
如果使用wixlib,则不需要考虑GUID的问题,因为没有任何时候您能够更改它们以适用于不同的软件包。