我已经多次看过这个问题但是没有一个答案似乎对我有用。我显然缺少一些基本的东西,但我似乎无法找出它是什么!我只使用了几天的WiX,所以我还是很新的。
基本上,我已经为现有产品构建了一个插件,我想在允许插件安装之前检查产品是否已安装。我认为最简单的方法是检查主要可执行文件是否在正确的目录中。
到目前为止我的相关代码:
<Property Id="FILEEXISTS">
<DirectorySearch Id="CheckFileDir" Path="INSTALLDIR" Depth="0">
<FileSearch Id="CheckFile" Name="main.exe" />
</DirectorySearch>
</Property>
<Condition Message="File does exist.">NOT FILEEXISTS</Condition>
其中INSTALLDIR
是main.exe所在目录的Id
,并在嵌套的Directory
标记中定义。
答案 0 :(得分:5)
在用户可以通过MSI对话框设置安装文件夹之前执行搜索。所以这种方法不会按照你想要的方式运作。
如果要检查安装文件夹中的文件,我建议通过DoAction控件事件执行UI自定义操作。可以通过文件夹选择对话框中的“下一步”按钮触发此事件。
此处没有预定义的自定义操作,因此您需要使用自定义代码编写一个。它应该是一个接收安装句柄的DLL或VBScript。您可以在此处找到一个小教程:http://www.codeproject.com/KB/install/msicustomaction.aspx
答案 1 :(得分:1)
我想你错过了@Path中INSTALLDIR周围的方括号[]。另外,@ Depth = 0看起来很可疑,只是省略了普通搜索的这个属性,它应该默认为1,这就是你通常需要在目录中查找文件。
希望有所帮助,但要严格,你的问题不包含真正的问题。很难理解你是否收到任何错误,或者条件不起作用......