Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wix-如何防止覆盖整个目录?_Wix_Wix3.5 - Fatal编程技术网

Wix-如何防止覆盖整个目录?

Wix-如何防止覆盖整个目录?,wix,wix3.5,Wix,Wix3.5,我有wix安装程序,它将一些文件复制到一些目录。每个文件都声明为单个组件,具有一些路径-若目录不存在,安装程序将创建它并将文件放在那个里 我想做的是:若目录已经存在,安装程序不应该复制那个里的任何文件(即使文件不存在,也不应该复制到已经存在的目录) 但不可能将“永不覆盖”设置为目录,所以如何防止将新文件复制到现有目录?是否有任何条件(如“是否存在目录”)可以在这里使用 是否有任何条件(如“是否存在目录”)可以在这里使用 是的,您可以使用如下条件元素: <Directory Id="FooF

我有wix安装程序,它将一些文件复制到一些目录。每个文件都声明为单个组件,具有一些路径-若目录不存在,安装程序将创建它并将文件放在那个里

我想做的是:若目录已经存在,安装程序不应该复制那个里的任何文件(即使文件不存在,也不应该复制到已经存在的目录)

但不可能将“永不覆盖”设置为目录,所以如何防止将新文件复制到现有目录?是否有任何条件(如“是否存在目录”)可以在这里使用

是否有任何条件(如“是否存在目录”)可以在这里使用

是的,您可以使用如下条件元素:

<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”,但现在它可以工作了: