use*_*966 6 installation inno-setup
我正在尝试一体化构建32/64位安装程序.在32位与64位机器上唯一不同的是对RegAsm.exe的调用.对于64位机器,代码必须查看64位框架,而对于32位,它会查看标准框架.
32位:"C:\ windows\microsoft.net\framework"64bit:"C:\ windows\microsoft.net\framework64";
我有我的软件包设置来运行安装操作.对于我的64位操作,我有IsWin64的检查启用.
文件名:{dotnet4064}\Regasm.exe; 参数:"""mydll.dll""/ codebase"; WorkingDir:{app}; StatusMsg:"注册加载项"; 标志:RunHidden; 检查: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.
Run Code Online (Sandbox Code Playgroud)
这一切都适用于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"
Run Code Online (Sandbox Code Playgroud)
我通过添加以下内容解决了这个问题:ArchitecturesInstallIn64BitMode = x64然后使用Check:Is64BitInstallMode