0

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

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

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

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

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

编辑

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

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

4

1 回答 1

1

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

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

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

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

  • 设置msidbCustomActionTypeNoImpersonate
  • 为“系统上下文中的延迟执行”设置自定义操作
  • 为“没有模拟的延迟执行”设置自定义操作
于 2011-03-17T02:58:36.950 回答