Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.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 - Fatal编程技术网

WiX-如何在安装过程中使用不同的复制策略

WiX-如何在安装过程中使用不同的复制策略,wix,Wix,安装期间,我的应用程序将: 步骤A,查找C:\WebService目录。如果发现,请执行以下操作: copy *.bat --> C:\WebService\ copy boost*.dll --> C:\WebService\libs\ copy myApp.dll --> C:\WebService\plugins\ copy *.bat --> [LocalAppData]\myApp\bin\ copy *.dll --> [LocalAppD

安装期间,我的应用程序将:

步骤A,查找
C:\WebService
目录。如果发现,请执行以下操作:

copy *.bat      --> C:\WebService\
copy boost*.dll --> C:\WebService\libs\
copy myApp.dll  --> C:\WebService\plugins\
copy *.bat --> [LocalAppData]\myApp\bin\
copy *.dll --> [LocalAppData]\myApp\libs\
如果未找到步骤B,请执行以下操作:

copy *.bat      --> C:\WebService\
copy boost*.dll --> C:\WebService\libs\
copy myApp.dll  --> C:\WebService\plugins\
copy *.bat --> [LocalAppData]\myApp\bin\
copy *.dll --> [LocalAppData]\myApp\libs\
我该怎么做

编辑:

我通过以下步骤完成了第2步:

  • 创建源目录:

    src\bin

    src\libs

  • 将文件复制到这些子文件夹

  • 使用
    heat
    扫描src目录并将组生成到wxs文件中


  • 这里的问题是,对于步骤A,我必须再次这样做。但是有大量的*.dll,再次将它们复制到另一个目录看起来不是一个好主意。

    您对问题的表述方式表明,您对Windows Installer的理解存在巨大差距。MSI/WiX不是脚本语言。您需要了解AppSearch、功能、方向、组件和条件是如何工作的。基本上,您需要将文件分组到组件中,并使用AppSearch检测目录是否存在。然后在条件中使用搜索结果来确定安装了哪些文件。

    您对问题的表述方式表明,您对Windows Installer的理解存在巨大差距。MSI/WiX不是脚本语言。您需要了解AppSearch、功能、方向、组件和条件是如何工作的。基本上,您需要将文件分组到组件中,并使用AppSearch检测目录是否存在。然后在条件中使用搜索结果来确定安装了哪些文件。

    好的,最后解决了这个问题

    简而言之,我通过编写C++程序来帮助这个。

    详情如下

    我的wxs启动方式如下:

    <Directory Id='TARGETDIR' Name='SourceDir'>
      <Directory Id='WebDir'>
          <Directory Id='INSTALLDIR' Name='$(var.ProductName)'/>
      </Directory>
      <Directory Id='DefaultDir'/>
    </Directory>
    

    有了这些wxs文件,软件包可以在不同的场景下安装到不同的地方。

    好的,终于解决了

    简而言之,我通过编写C++程序来帮助这个。

    详情如下

    我的wxs启动方式如下:

    <Directory Id='TARGETDIR' Name='SourceDir'>
      <Directory Id='WebDir'>
          <Directory Id='INSTALLDIR' Name='$(var.ProductName)'/>
      </Directory>
      <Directory Id='DefaultDir'/>
    </Directory>
    

    有了这些wxs文件,软件包可以在不同的场景下安装到不同的位置。

    编辑了我的问题并提供了一些详细信息,很抱歉我的疏忽刚刚发现您的解决方案将被重复的目录id阻止-我没有给您提供解决方案,我告诉了您应该阅读的内容。我不知道你的代码是什么样子,但是如果你有重复的目录ID,考虑把目录元素放在一个片段中,并使用DirectoyRf元素在其他片段文件中使用它们。很抱歉我的疏忽刚刚发现您的解决方案将被重复的目录id阻止-我没有给您解决方案,我告诉过您应该阅读什么。我不知道你的代码是什么样子,但是如果你有重复的目录ID,考虑把目录元素放在一个片段中,并使用DirectoyRf元素在其他片段文件中使用它们。