2

プロジェクトを 64 ビット (任意の CPU ではない) としてビルドしましたが、具体的には 64 ビットです。すべての dll は 64 ビットです。それらのほとんどはマネージ コード (C#) であり、いくつかのファイルはアンマネージ (C++ コード) です。

Installshield でインストーラーを作成していますが、dll を登録する必要があります。私はオンラインでたくさん読んだので、混乱しています。

  • regsvr32 -> C++ dll を登録するには、どの regsvr32.exe を使用すればよいですか? System32 または Syswow64。
  • regasm -> C# dll を登録するには、どの regasm を使用すればよいですか? フレームワーク/framework64
4

1 に答える 1

4

64 ビット システムで、64 ビット アプリケーションから見た場合:

  • System32 : 64 ビット システム ファイルが含まれます
  • SysWow64 : 32 ビット システム ファイルが含まれます

64 ビット システムで、32 ビット アプリケーションから見た場合:

  • System32 : 通常は SysWow64 にリダイレクトされるため、32 ビット システム ファイルにアクセスします。
  • SysNative : 実際の System32 にリダイレクトされます。64ビットファイルにアクセスします

64 ビット システムで、ファイル システムのリダイレクトが無効になっている場合 (IntallScriptWOW64FSREDIRECTIONまたは Windowsを参照Wow64DisableWow64FsRedirection)、System32 フォルダーへのパスがあれば、64 ビット ファイルにアクセスします。

Regasm はこの場所にはありません。代わりに、32 ビット ビルドが含まれWindows\Microsoft.NET\Framework\<version>、64 ビット ビルドが含まれていWindows\Microsoft.NET\Framework64\<version>ます。ここに奇妙なフォルダー名はありませんが、システム フォルダーではありません。

: ファイルを登録するには、正しいビット数と正しいアプリケーションが必要です。さらに、Windows インストーラー パッケージ (基本的な MSI プロジェクトなど) を作成している場合は、インストール時にこのようなツールを呼び出すべきではありません。代わりに、ネイティブ DLL 用の COM Extraction やマネージ アセンブリ用の COM Interop などのビルド時ツールを使用して、自己登録を MSI データに変換する必要があります。コンポーネントの 64 ビット設定を正しくマークすると、InstallShield が残りを処理するはずです。

于 2014-10-03T12:34:59.177 に答える