Inno 安装 RegAsm.exe 错误

Posted

技术标签:

【中文标题】Inno 安装 RegAsm.exe 错误【英文标题】:Inno Setup RegAsm.exe Errors 【发布时间】:2012-11-23 15:18:04 【问题描述】:

我正在尝试构建一个多合一的 32/64 位安装程序。在 32 位和 64 位机器上唯一不同的是调用 RegAsm.exe。对于 64 位机器,代码必须查看 64 位框架,而对于 32 位机器,代码必须查看标准框架。

32 位: "C:\windows\microsoft.net\framework" 64位: "C:\windows\microsoft.net\framework64";

我有我的包设置来运行安装操作。对于我的 64 位操作,我启用了 IsWin64 的检查。

文件名:dotnet4064\Regasm.exe;参数:“”“mydll.dll”“/codebase”;工作目录:app; StatusMsg: "注册插件";标志:运行隐藏;检查:IsWin64;

错误前的几行日志文件

2012-12-05 14:58:53.233   Installing the file.
2012-12-05 14:58:53.281   Successfully installed the file.
2012-12-05 14:58:53.281   -- Icon entry --
2012-12-05 14:58:53.281   Filename: C:\Documents and Settings\All Users\Start Menu\Programs\myprogram\my program\Uninstall  myprogram.lnk
2012-12-05 14:58:53.281   Creating directory: C:\Documents and Settings\All Users\Start Menu\Programs\myprogram\my program
2012-12-05 14:58:53.483   -- Icon entry --
2012-12-05 14:58:53.483   Filename: C:\Documents and Settings\All Users\Start Menu\Programs\myprogram\my program\myprogram.lnk
2012-12-05 14:58:54.224   -- Icon entry --
2012-12-05 14:58:54.224   Filename: C:\Documents and Settings\All Users\Desktop\myprogram.lnk
2012-12-05 14:58:54.281   Fatal exception during installation process (Exception):
                          Internal error: Cannot run files in 64-bit locations on this version of Windows.
2012-12-05 14:58:54.281   Exception message:
2012-12-05 14:58:54.281   Message box (OK):
                          Internal error: Cannot run files in 64-bit locations on this version of Windows.
2012-12-05 14:58:54.926   User chose OK.
2012-12-05 14:58:54.926   Message box (OK):
                          Setup was not completed.

                          Please correct the problem and run Setup again.
2012-12-05 14:59:00.222   User chose OK.
2012-12-05 14:59:00.222   Rolling back changes.

这一切在 64 位机器上运行良好。在 32 位机器上出现错误:

内部错误:无法在此版本的 Windows 上运行 64 位位置的文件

我一直在查看帮助文档和谷歌,无法确定发生这种情况的原因。任何帮助表示赞赏。

[Run]
Filename: "dotnet40\Regasm.exe"; Parameters: "My.TaskPane.dll"; WorkingDir: "app"; Flags: runhidden; StatusMsg: "Registering MyTaskPane Add-In"
Filename: "dotnet4064\Regasm.exe"; Parameters: "My.TaskPane.dll"; WorkingDir: "app"; Flags: runhidden; StatusMsg: "Registering My TaskPane Add-In"; Check: IsWin64
Filename: "dotnet40\Regasm.exe"; Parameters: "My.TaskPane.dll /codebase"; WorkingDir: "app"; Flags: runhidden; StatusMsg: "Registering My TaskPane Add-In"
Filename: "dotnet4064\Regasm.exe"; Parameters: "My.TaskPane.dll /codebase"; WorkingDir: "app"; Flags: runhidden; StatusMsg: "Registering My TaskPane Add-In"; Check: IsWin64
Filename: "app\My Software Suite.exe"; Parameters: "/register"; WorkingDir: "app"; Flags: PostInstall; Description: "Register the My Software Suite"

我通过添加解决了这个问题: ArchitecturesInstallIn64BitMode=x64 然后使用 Check: Is64BitInstallMode

【问题讨论】:

获取安装日志并在错误发生之前显示相关行。 这是来自日志的响应。并没有告诉任何真正超出对话框提到的错误的内容。 2012-12-05 14:58:54.281 安装过程中的致命异常(异常):内部错误:无法在此版本的 Windows 上运行 64 位位置的文件。 2012-12-05 14:58:54.281 异常消息:2012-12-05 14:58:54.281 消息框(确定):内部错误:无法在此版本的 Windows 上运行 64 位位置的文件。 2012-12-05 14:58:54.926 用户选择了确定。 低表示安装程序正在执行不应该执行的 RegAsm.exe? 日志不显示 regasm.exe 的操作。它的逻辑位置将是错误所在的位置。就在出现错误之前,安装程序会在桌面和开始菜单上创建快捷方式图标(有效)。该错误在图标之后没有显示任何关于 regasm.exe 的内容,只是出现了故障(如上所列)。 日志是否在错误前显示--运行条目--?没有?您应该在错误发生之前用 10 行左右的日志更新您的问题。 【参考方案1】:

我通过添加:ArchitecturesInstallIn64BitMode=x64 然后使用 Check: Is64BitInstallMode 解决了这个问题

【讨论】:

以上是关于Inno 安装 RegAsm.exe 错误的主要内容,如果未能解决你的问题,请参考以下文章

RegAsm.exe 无法通过 installshield 2016 注册 Dll

如何在 Visual Studio 2008 安装项目中使用 regasm 注册 .NET CCW

RegAsm.exe无法通过installshield 2016注册Dll

来自VB6的.NET对象而不使用regasm.exe?

'RegAsm.exe' 不是内部或外部命令

如何从 Visual Studio 命令提示符以外的命令行运行 regasm.exe?