copyfile要素ファイルを使用すると、msiパッケージにバインドできません
-
05-07-2019 - |
質問
iはwix 3.0.iを使用しています画像。そして、単純なファイル要素を使用すると、ファイルはmsiパッケージにバインドされます。どうすればいいですか
すぐに返信
ありがとう サミール
解決
どうやら、ユーザーによって選択された多数の画像ファイルを含むスクリーンセーバーインストーラーを生成できるアプリケーションを作成する必要があります—スクリーンセーバーインストーラーを作成するための特殊なInstallShieldアプリケーションの一種。
最初にテンプレートMSIファイルを作成します(wix または他の何か) 作品。ユーザーが後で選択するファイルがわからないので、IDが「UserSelectedFiles」のプレースホルダーコンポーネントを追加します。これを配布する アプリケーションのテンプレートMSIファイル。
次に、ユーザーが 新しいインストーラー、コピーして開始 テンプレート。コピーしたmsiを編集して、ユーザーが選択したファイルもインストールするようにします。 .NETクラスでこれを行うことができます &quot; deploymentで見つけることができます ツールの基礎&quot; API。これは、wixに付属するアセンブリのセットです。を見てみましょう <コード> C:\ program files \ Windows Installer XML v3 \ sdk 。
MSIのファイルテーブルエントリをカウントする次の例のように、いくつかの簡単なものにのみDTF APIを使用しました。
var database = new Database(@"\path\to\some\file.msi");
var list = database.ExecuteQuery("SELECT FileName FROM File");
Console.WriteLine(list.Count);
あなたのケースはもう少し複雑になります。おそらく
する必要があります- 以下を含むCABアーカイブを生成します
あなたがクラスを持つ画像ファイル
で見つける
Microsoft.Deployment.Compression.Cab
名前空間。 - CABアーカイブをmsiにマージします
Database.Merge
- ファイルテーブルに新しいエントリを追加する MSIの
- 製品コードを生成された各MSIに固有のものに変更します
- etcetera
所属していません StackOverflow