私は、VS 2008セットアップと展開プロジェクトを使用して、管理対象/管理対象外のアプリケーションが混在するように展開しています。私は、組み込みの登録プロパティ( "vsdraCOM"の "Register"プロパティの値を列挙した)を使用して、混在モードのDLLを登録するのに問題がありました。回避策として、.NETカスタムインストールアセンブリを追加しましたSystem.Configuration.Install.Installerから派生しています)。そのクラスが実行されており、多数のアセンブリのDll(Un)RegisterServerエントリポイントを実行することを含む、 。.NETカスタムアクションを実行する前にGACを強制的にインストールしますか?
ただし、1つのDLLが正常に登録されていません。これは、GACにインストールしたいサードパーティの再配布可能なアセンブリに依存する唯一のDLLです。 VS 2008のセットアップとデプロイメントプロジェクトの組み込みサポートのおかげで、これらのアセンブリをGACにインストールしました。これは動作していることが分かりました。私は、インストーラがGACインストールを実行する前にカスタムアクションが実行されていることを確認しました。
Whew。だから私の質問は、カスタムアクションを実行する前にGACインストールを実行するインストーラを強制する方法はありますか?これを行うカスタムアクションの "条件"プロパティを使用する方法はありますか?そうでない場合は、私の最高の選択肢は何ですか? DLLからレジストリエントリを取得し、インストーラのレジストリ設定に追加します(これはあまり好きではありません。将来、新しいCOMサーバを追加する可能性があります)。 .NETコードを使用してアセンブリをGACに手動でインストールします(これを行う方法はわかりません)。
おかげで、
デイブ
ありがとうございます。私たちはinstallshieldを使用しますが、ビルドコンピュータが再び稼働するまでに数週間かかるため、確実なインストールが必要です。 MSI APIソリューションは有望ですね。私は、System.EnterpriseServices.Internal.Publish.GACInstall()がGACに任意のアセンブリをインストールすることを発見しましたが、これは理想的ではありません(内部的なエラーチェックやロールバック/アンインストールの意味論。) –