Wix-如何防止覆盖整个目录?
我有wix安装程序,它将一些文件复制到一些目录。每个文件都声明为单个组件,具有一些路径-若目录不存在,安装程序将创建它并将文件放在那个里 我想做的是:若目录已经存在,安装程序不应该复制那个里的任何文件(即使文件不存在,也不应该复制到已经存在的目录) 但不可能将“永不覆盖”设置为目录,所以如何防止将新文件复制到现有目录?是否有任何条件(如“是否存在目录”)可以在这里使用 是否有任何条件(如“是否存在目录”)可以在这里使用 是的,您可以使用如下条件元素:Wix-如何防止覆盖整个目录?,wix,wix3.5,Wix,Wix3.5,我有wix安装程序,它将一些文件复制到一些目录。每个文件都声明为单个组件,具有一些路径-若目录不存在,安装程序将创建它并将文件放在那个里 我想做的是:若目录已经存在,安装程序不应该复制那个里的任何文件(即使文件不存在,也不应该复制到已经存在的目录) 但不可能将“永不覆盖”设置为目录,所以如何防止将新文件复制到现有目录?是否有任何条件(如“是否存在目录”)可以在这里使用 是否有任何条件(如“是否存在目录”)可以在这里使用 是的,您可以使用如下条件元素: <Directory Id="FooF
<Directory Id="FooFolder" Name="Foo">
<Component Id="SomeId">
<File Source="..." />
<Condition>Not FOO_FOLDER_ALREADY_EXISTS</Condition>
</Component>
</Directory>
<Property Id="FOO_FOLDER_ALREADY_EXISTS">
<DirectorySearch Id="FooFolderSearch" Path="[FooFolder]" />
</Property>
edit:显然,上面的目录搜索不起作用,因为[FooFolder]
属性仅在CostFinalize
操作期间解析(请参阅)。但在此之前,在AppSearch
操作期间,目录搜索已经发生
我不确定如何解决这个问题。这可能涉及到在
CostFinalize
之后使用自定义操作而不是windows installer目录搜索设置FOO\u FOLDER\u ready\u EXISTS属性。关于如何避免在成本最终确定之前设置属性的时间问题,另一种可靠的处理方法是将属性写入注册表
我相信这是解决设置属性的时间问题最常见的方法,它允许安装程序跟踪这些属性以便卸载等等。。。我用了它,效果很好
下面介绍如何开始操作。如何在目标目录内将路径设置为相对路径?我的id是MYSQL:SETUP\u MODE=“FirstComputer”,但现在它可以工作了: