如何在Windows Installer程序包添加的注册表项中引用GAC中程序集的路径?

时间:2020-03-06 14:28:16  来源:igfitidea点击:

我有一个.NET程序集,其中包含要通过EnterpriseServices(COM +)注册为ServicedComponent并由第三方应用程序通过COM RPC调用的类。因此,我需要将其添加到GAC并在" HKEY_CLASSES_ROOT \ CLSID \ {clsid} \ CodeBase"下添加注册表项,并在GAC文件夹中添加程序集DLL的路径。 (我不能依靠regsvcs来执行此操作,因为这是一个32位程序集-它依赖于32位第三方组件-并且我之前引用的第三方应用程序无法在Wow6432Node中看到类)

所以问题是:

是否可以在Windows Installer中作为可在注册表项等的值中使用的属性,找到要在GAC中创建的程序集的路径,或者至少是指向GAC文件夹本身的路径?

解决方案

如果每个文件都有一个组件,则应该使用该组件的KeyPath指向该文件的安装位置(在本例中为GAC)。我们可以在MSI的注册表表中的条目的值字段中将组件键用作令牌。

假设我们在" assmb.dll"的"文件"表中有一个带有File键的程序集及其对应的组件,也就是" assmb.dll"。我们可以在注册表表中设置值字段,以将程序集注册到[$ assmb.dll],它将解析为程序集的安装位置。如果此目录是GAC,它将解析为GAC的位置。

我们可以在此处找到有关MSI中格式化字段的更多信息。