我正在尝试使用.msi
在我的DLL上执行自定义命令。我想知道如何在x86
和c:\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
的位置
相关文章
答案 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文件不包含任何可以进行的注册表更新 由用户定义的寄存器功能构成。