【问题标题】:Regasm.exe fails in setup when launched from msi on x64 systems在 x64 系统上从 msi 启动时,Regasm.exe 安装失败
【发布时间】:2011-07-08 17:53:57
【问题描述】:

我的安装有问题。安装运行一个命令行选项来 regasm.exe 一个带有 /codebase 选项的 .net com dll。

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

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

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

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

编辑

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

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

【问题讨论】:

  • 可能很幼稚,但您确定这两种方法都具有相同的访问/修改/等权限吗?在您的计算机上进行操作?
  • @tchrikch,不,我不确定,但我不希望它们有所不同,因为设置只是启动 msi(或者这就是我理解的方式)。我都以管理员身份运行。

标签: .net com installation regasm


【解决方案1】:

This blog post 讨论了从安装程序的上下文运行具有管理员权限的可执行文件的需要。有问题的可执行文件不同(appcmd.exe,在您的情况下与 regasm.exe),但问题听起来很相似。

我认为与你相关的那篇文章是这样的:

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

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

  • 设置msidbCustomActionTypeNoImpersonate
  • 为“系统上下文中的延迟执行”设置自定义操作
  • 为“无模拟的延迟执行”设置自定义操作

【讨论】:

  • 非常感谢。不幸的是,我们现在采用的解决方案是“使用 setup.exe 进行安装”,但我已经为下一个版本记录了这一点,所以希望当我们开始构建新的安装程序时,我们将能够使用这些信息.在那之前,我将无法将其标记为已回答,但答案听起来很合理,所以请向我 +1。
猜你喜欢
  • 1970-01-01
  • 2020-02-18
  • 2015-06-22
  • 2011-03-25
  • 1970-01-01
  • 2018-01-01
  • 2022-08-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多