1

我要做的是使用 wix# 安装程序创建一个空文件夹。

我找到了“空目录”示例(“src/WixSharp.Samples/Wix# Samples/Empty Directories ”),它说:

使用原始 Wix 时,您不能有空目录。每个目录都必须有组件(例如文件)或特殊元素 CreateFolder。

Wix# 没有这样的限制,因为它只是在检测到空目录声明时自动在 Wix 源文件中创建所有必要的语法修饰(注入 CreateFolder 元素)。

但是当我构建并运行示例时,我没有得到任何“示例”或“文档”文件夹(示例中的空文件夹)。

日志文件包含以下内容:

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 工具集 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 回答