0

を使用して、DLL でカスタム コマンドを実行しようとしています.msix86フレームワークのパス(c:\Windows\Microsoft.NET\Framework\v2.0.50727)を取得する方法x64 machinex86 machine

MSI エラー - regsvr32 カスタム アクションの失敗

システムパスの使用を取得するために使用する[SystemFolder]ため、場所を取得するプロパティはありますかc:\Windows\Microsoft.NET\Framework\v2.0.50727

ここに画像の説明を入力

関連記事

.NET Framework ディレクトリ パスの取得

4

1 に答える 1

0

「自己登録」 (Regsvr32、Regasm、GACUTIL、InstallUtil など) は、プロセス外で実行され、宣言的ではなく、トランザクション的ではないため、Windows インストーラーのベスト プラクティスとは見なされません。ターゲット マシンに加えられた変更に関する Windows インストーラーの知識を無効にし、速度が遅く、壊れやすいことが多く、修復、アップグレード、ダウングレード、ロールバックなどのシナリオで破損することがよくあります。

別の方法として、アセンブリに関連付けられている COM メタデータを "収集" または "抽出" し、それらを MSI にネイティブに作成することもできます。これを正確に行う方法は、MSI の作成に使用しているツールによって異なります。InstallShield には「.NET Com Visible」という設定があり、WiX には「Heat」という機能があります。より生のアプローチは、コマンド regasm foo.dll /regfile:out.reg を実行し、パスを MSI ディレクトリ プロパティに手動で置き換えて、regfile の内容をインストーラーに作成することです。

MSDN のregasmトピックに記載されているように、 regasm /regfile には 1 つの問題があります。

.reg ファイルには、ユーザー定義のレジスタ関数によって実行できるレジストリの更新は含まれていないことに注意してください。

于 2013-08-29T11:01:46.043 に答える