質問

私が混在管理/非管理アプリケーションをデプロイするためにVS 2008のセットアップとデプロイメントプロジェクトを使用しています。私はトラブル回避策として、組み込みの登録プロパティ(「vsdraCOM」プロパティを「登録」。の列挙値)を使用して混合モードDLLの登録を持っていた、私はクラスで(.NETのカスタムアセンブリのインストール追加したものSystem.Configuration.Install.Installer由来する。)私は、そのクラスが実行され、操作の数が正常アセンブリの数のDLL(UN)RegisterServerエントリポイントを実行するなど、そのアセンブリにコードをインストールおよびアンインストールすることを確信しています。

ただし、1つのDLLが正常に登録されていません。これは、GACにインストールしたいいくつかのサードパーティ製の再配布可能なアセンブリに依存のみDLLです。私はVS 2008のセットアップと展開プロジェクトで、そのためのビルトインサポートにGACのおかげにインストールされているもののアセンブリを持っている、と私はそれが働いている知っています。私は何が起こっていることはインストーラがGACのインストールを実行する前にカスタムアクションが実行されていることであることが確認されました。

やれやれ。だから私の質問は、カスタムアクションを実行する前に、GACのインストールを実行するためのインストーラを強制する方法はあります、ありますか?これを行うには、カスタムアクションの「条件」プロパティを使用する方法はありますか?ない場合は、私の最高の選択肢は何ですか? DLLからレジストリエントリをキャプチャし、(誰かが将来的にクラスに新しいCOMサーバーを追加可能性があるため、これを好きではない)インストーラのレジストリ設定に追加しますか?手動でGACにアセンブリをインストールするには、.NETコードを使用して(まだそれを行う方法がわからない)?

おかげで、

デーブ

役に立ちましたか?

解決

は、Visual Studioで作成することができ、セットアッププロジェクトは非常に限られています。それが唯一のカスタムアクションは4ポイントでスケジュールすることを可能にします。しかし、MSIは、カスタムアクションは、彼らが何ができるかについて、いくつかの制限とプロセスの任意の時点でスケジュールすることを可能にします。

私の最初のソリューションは、セットアップの開発ツールとしてのVisual Studio 2008を使用して停止することです。 Visual Studioのチームが抽象的にインストール作成のすべての複雑さを離れてみました。しかし、その過程で彼らはまた、MSIのすべての柔軟性を奪われてきました。ウィックスと、InstallShield、またはワイズは簡単なインストールが、何のためのより良い製品です。私は、私たちのインストールのためのVisual Studioを使用してオフに開始し、それはあまりにも多くの仕事になってしまいました。もう一つの回避策を実装すると、その副作用は対処されることは常にありました。

あなたが技術を切り替えることができない場合は、手動で結果のMSIファイルを変更する方法を学習する必要があります。あなたのケースでは、 HTTP、のInstallExecuteSequenceテーブルを変更する必要があります://msdn.microsoft.com/en-us/library/aa369500(VS.85).aspxのに。あなたはオルカから手動でこれを行うことができ、ます。http:// MSDN .microsoft.com / EN-US /ライブラリ/ aa370557(VS.85).aspxののか、MSI APIを通じて<のhref = "http://msdn.microsoft.com/en-us/library/aa372860 (VS.85).aspxの」REL = "nofollowをnoreferrer"> http://msdn.microsoft.com/en-us/library/aa372860(VS.85).aspxのの。オルカをダウンロードして、インストールに対する検証スクリプトを実行することを確認します。スクリプトは、顧客のマシンに展開する際の固定はあなたに数え切れないほどの時間を節約する多くの問題を指摘します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top