Wix属性评估
如何使用Wix属性评估,wix,windows-installer,Wix,Windows Installer,如何使用FileSearch结果作为组件部分中的条件。 我想得到这样的东西: <Property Id=\"CONFIG_XML_EXISTS\"> <DirectorySearch Id="CheckForConfigXml" Path="[INSTALLDIR]\">' <FileSearch Id="ConfigXmlSearch" Name="config.xml" /> </Dire
FileSearch
结果作为组件
部分中的条件。
我想得到这样的东西:
<Property Id=\"CONFIG_XML_EXISTS\">
<DirectorySearch Id="CheckForConfigXml" Path="[INSTALLDIR]\">'
<FileSearch Id="ConfigXmlSearch" Name="config.xml" />
</DirectorySearch>
</Property>
...
<Component Id="c_DefaultConfig.xml" Guid="{1AAB0AFD-B763-4A55-8585-B0AD4D8CE23C}">
<File Id="f_default_config.xml"
Name="default-config.xml"
Source="$(var.SourceRoot)\config.xml"/>
<Condition>CONFIG_XML_EXISTS</Condition>
</Component>
'
...
配置文件XML存在
我不知道为什么,但是属性wix不想评估
CONFIG\u XML\u EXISTS
,因为搜索在安装的很早就发生了,最可能的原因是INSTALLDIR没有值。你没有说你是在进行新的安装还是升级,所以不清楚你认为它的价值来自哪里
我还要指出,该源代码的目的显然是为了防止安装已经存在的文件,因此:
在您的评论中,您说“只有在目标(安装)目录中没有config.xml文件时,我的安装程序才能创建该文件。如果该文件存在,我的安装程序必须创建名为template.xml的文件”。我认为最简单的方法可能是在安装完成后在应用程序中,或者在所有文件安装完成后在自定义操作中。在安装之前似乎没有什么好方法可以做到这一点,因为INSTALLDIR是不可预测的。我已经看到通过将XML文件安装到(比如)用户的应用程序数据中解决了这种问题,并且在安装了这些文件之后,应用程序或自定义操作可以看到(或不看到)哪些文件,并从用户的应用程序数据中获取它们 一,。如何指定评估阶段(复制文件之前)2。上面的代码就是一个例子,我当前的项目我真的必须检查exstanceIn general installs从不检查他们将要安装的每个文件是否存在,以查看它们是否存在-他们利用标准文件替换规则,因此关于您的异常的更多细节将有所帮助。同样,没有迹象表明您是否正在进行新安装或升级,也没有迹象表明用户是否可以更改INSTALLDIR,这使得您的测试毫无意义。我知道,一般来说,安装程序不会执行我试图执行的操作,但无论如何。。。。这里的想法是:我的安装程序必须创建文件
config.xml
,前提是目标(安装)目录中没有这样的文件。如果存在这样的文件,我的安装程序必须创建名为template.xml
的文件。