0

installshield で作成された msi セットアップがあり、コミット カスタム アクションとして DTF カスタム アクション dll を実行しています。MessageBox.Show をカスタム アクションに挿入すると、[PROGRAMFILESDIR] 内に「CustomActionProject.CA.dll-」という名前の一時フォルダーがあり、CustomActionProject.CA.dll がすべての参照と共にコピーされていることがわかります。

この一時フォルダを作成せず、.CA.dll が配置されている同じフォルダに CustomActionProject.CA.dll を抽出 + 実行するようテクノロジに指示する方法はありますか?

編集:

wix.ca.targets を構成することで、.CA.dll に参照を含めることができないことがわかりました。私の場合、.CA.dllに20MBのdllが含まれないようにします。

ここで、CustomActionProject.dll が、製品と共にインストールされた参照を確認できるようにしたいと思います。

ファイルは次のとおりです。

<ProgramFilesFolder>
  <MyApplicationFolder>
    CustomActionProject.CA.dll
    ... About 30 dlls installed with the application that CustomActionProject.dll needs to call
    <Place I Would Like to See CustomActionProject.dll extracted> 
4

2 に答える 2

1

カスタム アクションはマネージド .Net 言語 (おそらく C# または VB.Net) でプログラムされています。msi ファイルには、ネイティブ コードで構成される dll カスタム アクションのみが含まれている可能性があるため、DTF ツール (具体的にはツールmakesfxca.exe) は、マネージ dll をヘルパー コードと一緒にパック/ラップして、自己抽出型のネイティブ コード dll を作成します。WIX の命名規則に従い、ネイティブ カスタム アクション dll には.CAinfix が含まれています。

これ (つまり、マネージド コードを生成する言語で記述されたカスタム アクションを持つこと) が機能するためには、自己抽出が行われる必要があります。したがって、あなたの質問に対する短い答えは「いいえ」です。

于 2014-09-02T23:33:00.900 に答える