1

私がやろうとしているのは、wix# インストーラーを使用して空のフォルダーを作成することです。

「空のディレクトリ」サンプル ( 「src/WixSharp.Samples/Wix# Samples/Empty Directories」) を見つけました。

未加工の Wix を使用する場合、空のディレクトリを作成することはできません。すべてのディレクトリには、コンポーネント (File など) または特別な要素 CreateFolder が必要です。

Wix# には、空のディレクトリ宣言が検出されたときに Wix ソース ファイルに必要なすべての構文装飾 (CreateFolder 要素を挿入) を自動的に作成するだけなので、そのような制限はありません。

しかし、サンプルをビルドして実行すると、「Samples」または「Docs」フォルダー (サンプルの空のフォルダー) が取得されませんでした。

ログ ファイルには次の内容が含まれます。

Action 16:25:24: RemoveFiles. Removing files
Action start 16:25:24: RemoveFiles.
RemoveFiles: File: Removing files, Directory: 
MSI (s) (7C:F4) [16:25:24:926]: Counted 2 foreign folders to be removed.
MSI (s) (7C:F4) [16:25:24:926]: Removing foreign folder: C:\Program Files (x86)\My Company\My Product\Docs\Manual\
MSI (s) (7C:F4) [16:25:24:926]: Removing foreign folder: C:\Program Files (x86)\My Company\My Product\Samples\
Action ended 16:25:24: RemoveFiles. Return value 1.

「外国人」とは?私は何を間違っていますか?

WiX Toolset v3.10.1を使用しています。

4

1 に答える 1

0

問題は WixSharp にあり、バージョン 1.0.32.1 で修正されました。

長い回答については、WixSharp CodePlex ページの問題を参照できますが、短い回答は次のようになります (WixSharp の作成者、Oleg の言い換え):

MSI は、空のフォルダーのインストールを「実際には」サポートしていません。回避策は、CreateFolder 要素を含む空のコンポーネントを挿入することです。ただし、アンインストール時にフォルダーを削除するには、空のコンポーネントにも RemoveFolder 要素を挿入する必要があります。また、空のフォルダーの親フォルダーを考慮に入れ、それらすべてに再帰的に適用する必要があります。これらの回避策は、今のところ望ましくない影響を与えることなく保持されています。

Wix# はこれらの回避策を追加していましたが、最終的には互いに競合し始め、その結果、「EmptyDirectories」サンプルと機能が壊れました。

于 2016-02-12T10:49:28.080 に答える