WiX 安装程序为自定义操作留下空文件夹

WiX installer leaves empty folders for custom actions

我已经创建了一个 WiX 安装程序项目和一个 CustomAction 项目。我已成功将 MyCustomAction 添加到安装脚本中,它可以正常工作。

但是,每次执行安装程序时,安装程​​序都会在 [INSTALLFOLDER] 中留下空文件夹。它们被命名为 MyCustomAction.CA.dll-MyCustomAction.CA.dll-0MyCustomAction.CA.dll-1 等。甚至卸载程序也不会删除它们,因此空文件夹的数量只会越来越大。

有没有办法阻止创建文件夹?我尝试了不同的执行值(提交、延迟),但它们似乎没有任何区别。

MyCustomAction 定义如下:

<CustomAction Id="MyCustomAction"
              Return="check"
              Execute="commit"
              FileKey="MyCustomAction.CA.dll"
              DllEntry="MyCustomAction" />

<InstallExecuteSequence>
  <Custom Action="MyCustomAction" Before="InstallFinalize">NOT Installed</Custom>
</InstallExecuteSequence>

我找到了问题的解决方案:我已将 MyCustomAction.CA.dll 包含在我的产品安装文件中,而不是在它自己的片段中。这导致dll被复制到安装文件夹。

现在,当 CustomActions 在它们自己的 Fragment 中定义时,不会在 INSTALLFOLDER 中创建临时文件夹。

您是否为他们添加了二进制条目?

<Binary Id='FooBinary' SourceFile='foo.dll'/>

http://wixtoolset.org/documentation/manual/v3/wixdev/extensions/authoring_custom_actions.html