7

32/64 ビット インストーラーをすべて 1 つに構築しようとしています。32 ビット マシンと 64 ビット マシンで唯一異なる点は、RegAsm.exe の呼び出しです。64 ビット マシンの場合、コードは 64 ビット フレームワークを参照する必要があり、32 ビットの場合は標準フレームワークを参照します。

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

インストール アクションを実行するためのパッケージ セットアップがあります。私の 64 ビット アクションでは、IsWin64 のチェックを有効にしています。

ファイル名: {dotnet4064}\Regasm.exe; パラメータ: """mydll.dll"" /codebase"; WorkingDir: {アプリ}; 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.

これはすべて 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 を使用してこれを解決しました。

4

1 に答える 1

3

ArchitecturesInstallIn64BitMode=x64 を追加してから、Check: Is64BitInstallMode を使用してこれを解決しました。

于 2012-12-06T15:21:59.633 に答える