【问题标题】:Get path of Framework in MSI custom actions在 MSI 自定义操作中获取框架的路径
【发布时间】:2013-09-01 12:09:03
【问题描述】:

我正在尝试使用.msi 在我的 DLL 上执行自定义命令。我想知道如何在x64 machinex86 machine 中获取x86 框架路径(c:\Windows\Microsoft.NET\Framework\v2.0.50727)

MSI Error - Failure of regsvr32 custom action

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

相关文章

Getting the .NET Framework directory path

【问题讨论】:

  • 我附上了图片。检查我想在那里。仅供参考,我是 java 开发人员,但必须在 .net 周围工作,所以...我是否必须在上面链接中提供的 dll 中编写函数?以及如何在自定义操作中调用该函数..
  • 你要执行的自定义命令是什么?
  • c:\Windows\Microsoft.NET\Framework\v2.0.50727> regasm.exe mydll.dll /codebase
  • 您使用什么工具来创作您的 MSI?

标签: c# dll windows-installer


【解决方案1】:

“自我注册”(Regsvr32、Regasm、GACUTIL、InstallUtil 等)在 Windows Installer 中不被视为最佳实践,因为它在进程之外运行,不是声明性的,也不是事务性的。它破坏了 Windows 安装程序对目标计算机所做更改的了解,速度较慢,通常很脆弱,并且经常在修复、升级、降级、回滚等场景中中断。

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

如 MSDN 中的 regasm 主题所述,regasm /regfile 有一个问题:

请注意,.reg 文件不包含任何注册表更新,可以 由用户自定义的寄存器函数生成。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-29
    • 1970-01-01
    相关资源
    最近更新 更多