2

このアプリケーションは、より大きなアプリケーション用のプラグインです。インストールを完了するには、メインアプリケーションによって提供されるバッチスクリプトを実行する必要があります。特定のレジストリキーが存在しないが、レジストリのWOW6432部分に存在するというバッチスクリプトエラー。カスタムアクションが64ビットとして実行されており、WOW6432なしでレジストリをフェッチしようとしているようです。バッチファイルにアクセスしたり制御したりできないため、レジストリの両方の部分をチェックするように変更することはできません。

カスタムアクションが32ビットとして実行されていることを確認するにはどうすればよいですか?

バッチファイルが実行されると、cmdプロセスは64ビットモードで実行されます。

編集:64対32で実行されているかどうかを確認するために、HKLM / Software/SomeKeyでレジストリキーを検索する別のバッチスクリプトを作成しました。キーは実際にはHKLM/Software / Wow6432/SomeKeyにあります。%windir%\ SysWow64 \ cmd.exe(タスクマネージャーはこのプロセスに* 32のフラグを立てます)を使用して手動で実行すると、正常に機能します。通常のcmd.exeで実行すると、レジストリキーが見つかりません。これと同じバッチファイルをカスタムアクションとしてwixに配置すると、* 32以外のコマンドが開き、regkey検索が失敗します。

私はこのバッチをWixで次のように設定しました:

<CustomAction Id="batchCA" Property="BATCHFILE" ExeCommand="" Execute="deferred" />

BATCHFILEがプロパティである場合、バッチファイルのパスを設定します。つまり、「C:\ temp\batch.cmd」です。正常に動作しているようですが、これは間違っていますか?

4

1 に答える 1

0

コマンドラインexeを32ビットとして明示的に指定する必要があります。したがって、「yourScriptName.cmd」のようにバッチを直接呼び出す代わりに、次を使用する必要があります。

%windir%\SysWoW64\cmd.exe /c yourScriptName.cmd
于 2012-11-06T13:11:30.580 に答える