基本MSI(installshield 2014)で新しいカスタムアクションを作成しています。プロジェクト。私は、管理された.Netアセンブリでパブリックメソッドを呼び出す必要があります。これは、製品配備の一部として展開されます。 abc.dll
は、セットアップデザインのfeature1
フィーチャーの一部であるcomponent1
という名前のコンポーネントの一部です。.netクラスライブラリのdllファイル(.exeファイルの製品展開と依存関係の一部)がカスタムアクションから参照できません
カスタムアクション作成ウィザードでそのアセンブリを参照しようとすると、そのLocation
はInstalled with the product
となります。しかし、カスタムアクションの作成ウィザードでAction Parameters
ステップに私は、私はそれを見ていない展開パスでabc.dll
を閲覧しようとすると:
でそれを閲覧している間、私はabc.dll
を見ることができるよが、以下のスナップショットに示すようにabc.dll
は、製品の%programfiles%
に展開されるcomponent1
の一部として存在します。一方
以下のスナップショットに示したように、私はカスタムアクションの作成ウィザードで(別のコンポーネントcomponent2
の一部としてデプロイされる)pqr.exe
ファイルを見ることができます:
これはなぜ起こっているのかもしれないのですか?
いくつかのパブリックメソッドを持つシンプルなC#dllファイルを作成し、それをディスクに置いてカスタムアクションで参照することは可能です。 dllはバイナリテーブルに格納され、カスタムアクションを使用できます。私がここで言及しているdllは、単純なクラスライブラリプロジェクト( 'main'メソッドを持たない)です。では、バイナリテーブルに格納されたdllファイルは、%programfiles%ディレクトリにインストールされているコンポーネントの一部であるdllとどう違うのでしょうか。私は管理されたdllファイル( 'main'メソッドを持たない)に存在するパブリックメソッドを、デプロイされたコンポーネントの一部であっても呼び出すことができます。私はここに何かを逃していますか – RBT
Visual Studioにあるように、Managed Codeカスタムアクションへの呼び出しをラップするためのInstallShieldのサポートがあるかもしれませんが、マネージコードCAを直接呼び出すネイティブサポートはありません。そのため、たとえば、http://www.advancedinstaller.com/user-guide/qa-c-sharp-ca.htmlとhttps://www.firegiant.com/wix/tutorial/を呼び出すためのDTFがありますイベントとアクション/管理方法/ – PhilDW
私は私の質問にもっと明確に加え、私が自分の問題を解決できる答えを加えました。それは、instatallshieldが.Net exeとその依存関係を構成要素の一部として構築する際に、異なった方法でそれを管理する方法に関係していました。 – RBT