.net 从x64系统上的msi启动时,Regasm.exe安装失败

.net 从x64系统上的msi启动时,Regasm.exe安装失败,.net,com,installation,regasm,.net,Com,Installation,Regasm,我的安装有问题。安装程序运行命令行选项,将regasm.exe作为带有/codebase选项的.net com dll 当我从Setup.exe运行安装(由installshield构建)时,一切正常 当我从.msi运行安装时,regasm调用没有成功,没有注册任何内容,程序也没有运行 这个问题似乎只影响基于x64的系统,并且在x86系统上,这两种方法都有效 你知道问题出在哪里吗 编辑 问题似乎是,即使以管理员身份登录,msi也不会以管理员身份执行。我仍然会看到一个UAC对话框,但只是在向导进行

我的安装有问题。安装程序运行命令行选项,将regasm.exe作为带有/codebase选项的.net com dll

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

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

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

你知道问题出在哪里吗

编辑

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

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

讨论了从安装程序上下文中运行具有管理员权限的可执行文件的需要。所讨论的可执行文件是不同的(
appcmd.exe
,与您的案例中的
regasm.exe
),但问题听起来类似

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

结果表明,默认情况下,自定义操作模拟启动安装的用户,而无需安装程序本身运行时的管理员提升。这可以通过将CustomAction的模拟属性设置为“否”来更改。这还需要添加Execute=“deferred”,从而使自定义操作在InstallFinalize之前而不是之后运行

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

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

可能很幼稚,但您确定这两种方法在您的计算机上具有相同的访问/修改/等操作权限吗?@tchrikch,不,我不确定,但我不希望它们有所不同,因为安装程序只是启动msi(或者我的理解是这样的)。我正在以管理员身份登录,非常感谢。不幸的是,我们现在采用的解决方案是“使用setup.exe进行安装”,但我已经在下一版本中记录了这一点,所以希望当我们开始构建新的安装程序时,我们能够使用这些信息。在此之前,我无法将其标记为已回答,但答案听起来很合理,所以我的答案是+1。