6

私はc#でスナップインを書きました。

installutilを使用してインストールしようとしましたが、最初は機能しませんでした。msdnページで、mmcperfを実行してmanagement.dllをGACにインストールすると言われていることに気付きました。

これにより、スナップをインストールして実行することができました。私はxpマシンを持っています。

私の質問は、カスタムスナップインを顧客のマシンにどのように展開するかです...私が考慮する必要があることは何ですか?(OS?、. netフレームワーク、mmc 3.0がインストールされていますか?)

スナップインのインストール中にmmcperfを実行できますか?これは良いアプローチですか?

4

2 に答える 2

9

あなたの問題は違うかもしれませんが、私はかつて64ビットマシンで同様の問題に遭遇し、次のことを発見しました。問題が32/64ビットに関連していない場合、問題が何であるかはわかりません。お時間を割いて申し訳ありません。

InstallUtilを使用してスナップインをインストールできるはずです。ただし、InstallUtilには2つの異なるバージョンがあることに注意してください。1つはx86バイナリ用で、もう1つはx64バイナリ用です。

Any CPU用にC#コードをコンパイルする場合でも、標準のInstallUtilを使用すると、MMCスナップインは32ビットスナップインとしてのみ登録されます。64ビットOSで実行している場合は、MMCを32ビットプロセス(MMC /32IIRC)として起動して、スナップインがそこで利用できないかどうかを確認してください。

スナップインを64ビットスナップインとして登録するには、64ビットバージョンのInstallUtil(通常はC:\ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727にあります)を使用する必要があります。

スナップインの両方のバージョンを登録するには、2回登録する必要があります。

于 2009-12-28T19:44:31.033 に答える
3

マーク・シーマンの回答に追加:

MMCレジストリエントリを直接チェックして、スナップインが64ビットレジストリエントリに登録されているか、32ビットリダイレクトレジストリ(Wow6432Nodeの下に表示されるレジストリ)に登録されているかを確認することもできます。

  • 64ビットスナップイン:HKLM \ Software \ Microsoft \ MMC \ SnapIns \ FX:{SNAP-IN-GUID} .. ..
  • 32ビットスナップイン:HKLM \ Software \ Wow6432Node \ Microsoft \ MMC \ SnapIns \ FX:{SNAP-IN-GUID} .. ..

エントリがHKLM\Software \ Wow6432Nodeの下にのみある場合は、32ビットスナップインを登録しています。「MMC / 32」の実行に関するMarkのアドバイスにより、エントリが表示されるはずです。それは世界の終わりではありません。MMCセッションをスナップインショートカットとして保存すると、実行時に32ビットバージョンのMMCが開くと思います。

64ビットのスナップイン登録が本当に必要な場合(そしてなぜそうではないのですか?)、MSDNには、 64ビットと32ビットを取得するために呼び出すInstallUtilパスなど、いくつかの詳細が記載されたMMC64ビットと32ビットの考慮事項に関するページがあります。レジストリエントリ。

ただし、一部のMSIパッケージアプリケーションでは、ターゲットマシンでInstallUtil.exeを呼び出すのではなく、実際にはMSI自体にInstallUtil.exeのコピーがバイナリとして含まれていることに注意してください。(これが発生しているかどうかは、Orcaを使用してMSIバイナリテーブルとカスタムアクションを確認することで確認できます。)32ビットのInstallUtilのみが含まれていると、登録が間違った場所(Wow6432Node)に配置されます。

私が理解しているように、Windowsインストーラーの「正しい方法」(TM)は、InstallUtilをまったく使用しないことです(主に、マネージドMSIカスタムアクションの実行に関連する問題が原因だと思いますか?)。いずれにせよ、InstallUtilの使用を避けた場合は、MSIでレジストリエントリを明示的に作成し、Windowsインストーラーがそれらの作成と削除を制御できるようにすることで、スナップインを完全に登録します。

または、カスタムアクションを実行して、ターゲットマシンのFramework64フォルダーの下にあるInstallUtil.exeを呼び出すこともできます。これで正しいスナップイン登録場所が得られますが、それが気になる場合は、カスタムアクションが実行中にCMDシェルウィンドウをポップアップするという事実に対処する必要があります。MSIオーサリングツールに同等のものがあるかどうかはわかりませんが、WiXにはQuiet ExecutionCustomActionがあります。(WiXを使用していない場合でも、WixUtilExtension.dllをインクルードし、QtExec64CmdLineプロパティを適切に設定した後に「CAQuietExec64」を呼び出すことができると思います...しかし、そのレベルのMSIオーサリングで作業している場合はおそらくより良いでしょうWiXを切り替えて使用するだけです:)

于 2010-01-05T01:22:55.923 に答える