2011-03-04 73 views
0

我遇到安装问题。安装程序运行命令行选项regasm.exe a .net com dll和/ codebase选项。从x64系统上的msi启动时,Regasm.exe在安装时失败

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

当我从.msi运行安装而不是regasm调用不成功,没有任何注册,程序不运行。

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

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

编辑

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

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

+0

也许是幼稚的自定义操作,自定义操作,但你确定这两种方法具有相同的权限访问/修改/ etc。在你电脑上操作? – tchrikch 2011-03-04 11:04:05

+0

@tchrikch,不,我不确定,但我不希望他们有所不同,因为设置只是启动msi(或者我理解它的方式)。我正在运行以管理员身份登录。 – 2011-03-04 11:07:04

回答

1

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

的一块后,我认为是与你有关的是:

原来,在默认情况下,自定义操作模拟一个开始安装的用户,无需管理员海拔安装程序本身跑下。这可以通过将CustomAction的模拟属性设置为“no”来更改。这也需要添加Execute =“deferred”,并因此使自定义操作在InstallFinalize之前运行,而不是在之后运行。

我对InstallShield不熟悉,但看看是否有方法标记运行regasm.exe的自定义操作。你想寻找的选项(S),你可以设置类似表述为以下之一(这些都是说同样的事情的所有不同的方式):

  • msidbCustomActionTypeNoImpersonate
  • 设置对于“在系统范围内延迟执行”
  • 设置“延迟执行,没有冒充”
+0

非常感谢。不幸的是,我们现在使用的解决方案是'使用设置。exe安装',但我已经记下了下一个版本,希望当我们开始构建新的安装程序时,我们将能够使用这些信息。直到那时我不能标记为答案,但答案听起来很合理,所以+1。 – 2011-03-17 08:29:28