从x64系统上的msi启动时,Regasm.exe在安装程序中失败

时间:2011-03-04 10:54:12

标签: .net com installation regasm

我遇到安装问题。安装使用/ codebase选项运行regasm.exe a .net com dll的命令行选项。

当我从Setup.exe运行安装(由installshield构建)时,一切正常。

当我从.msi运行安装时,然后regasm调用没有成功,没有注册任何内容,程序也没有运行。

这个问题似乎只会影响基于x64的系统,而在x86系统上,这两种方法都有效。

任何想法可能是什么问题?

修改

问题似乎是即使以管理员身份登录,msi也不会以管理员身份执行。我仍然得到一个UAC对话框,但只能通过向导的中间位置。从setup.exe启动时,我会在向导出现之前获得UAC面板。如果我从管理命令提示符运行.msi,那么我没有UAC面板,一切都按预期工作。

所以我想一切都按预期工作了吗?要使自定义安装操作正常工作,必须使用管理权限运行msi吗?

1 个答案:

答案 0 :(得分:1)

This blog post讨论了从安装程序的上下文中运行带有管理员权限的可执行文件的必要性。有问题的可执行文件不同(appcmd.exe,而不是regasm.exe),但问题听起来很相似。

我认为与你有关的那篇文章是:

  

事实证明,默认情况下,自定义操作会模拟启动安装的用户,而无需安装程序本身在其下运行的管理员提升。可以通过将CustomAction的Impersonate属性设置为“no”来更改此设置。这也需要添加Execute =“deferred”,因此,自定义操作在InstallFinalize之前而不是之后运行。

我不熟悉InstallShield,但看看是否有办法标记运行regasm.exe的自定义操作。您想要查找可以设置的选项,这些选项与下列之一类似(这些是说同一内容的不同方式):

  • 设置msidbCustomActionTypeNoImpersonate
  • 为“系统上下文中的延迟执行”设置自定义操作
  • 为“没有假冒的延迟执行”设置自定义操作