在MSI自定义操作中获取Framework的路径

时间:2013-08-29 07:14:41

标签: c# dll windows-installer

我正在尝试使用.msi在我的DLL上执行自定义命令。我想知道如何在x86c:\Windows\Microsoft.NET\Framework\v2.0.50727

中获取x64 machine框架路径(x86 machine

MSI Error - Failure of regsvr32 custom action

要使用系统路径,我们使用[SystemFolder]因此,是否有任何属性可以获取c:\Windows\Microsoft.NET\Framework\v2.0.50727的位置

enter image description here

相关文章

Getting the .NET Framework directory path

1 个答案:

答案 0 :(得分:0)

"自我注册" (Regsvr32,Regasm,GACUTIL,InstallUtil等)不被视为Windows Installer中的最佳实践,因为它不在进程中,不具有声明性且不具有事务性。它击败了Windows安装人员对目标机器所做更改的了解,速度较慢,通常很脆弱,并且经常在修复,升级,降级,回滚等方案中中断。

另一种选择是"收获"或者"提取"与您的程序集关联的COM元数据,并将它们本地编写到您的MSI中。您如何做到这一点完全取决于您用于创作MSI的工具。 InstallShield有一个名为" .NET Com Visible"和WiX有一个名为" Heat"的功能。更原始的方法是运行命令regasm foo.dll /regfile:out.reg,然后手动将regfile的内容编写到安装程序中,用MSI目录属性替换路径。

在MSDN中的regasm主题中记录了regasm / regfile的一个问题:

  

请注意,.reg文件不包含任何可以进行的注册表更新   由用户定义的寄存器功能构成。

相关问题