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:CopyFile属性_Wix - Fatal编程技术网

WiX:CopyFile属性

WiX:CopyFile属性,wix,Wix,安装时,我想选择性地将一些.ini文件从SOURCEDIR复制到TARGETDIR,这意味着从.msi文件所在的目录复制到安装应用程序的目标文件夹 我做了,但它似乎什么也没做。日志文件帮不了什么忙 我已经成功地用CopyFile完成了一个更为复杂的场景,我被这个简单的场景所吸引 编辑:我在MoveFile表中有这些行: |FileKey |Component |SourceName |SourceFolder|DestFolder|Options |CopyIn

安装时,我想选择性地将一些.ini文件从SOURCEDIR复制到TARGETDIR,这意味着从.msi文件所在的目录复制到安装应用程序的目标文件夹

我做了
,但它似乎什么也没做。日志文件帮不了什么忙

我已经成功地用CopyFile完成了一个更为复杂的场景,我被这个简单的场景所吸引

编辑:我在MoveFile表中有这些行:

|FileKey |Component |SourceName |SourceFolder|DestFolder|Options |CopyIniFile |CoAppLicAndIni|Dreem15.ini |SOURCEDIR |INSTALLDIR|0 |MoveDataFile|CoAppLicAndIni|Dreem10_Personal.mdf|DB_DIR10 |INSTALLDIR|0
您可以改为使用
DestinationDirectory=“INSTALLDIR”
,还是必须动态创建属性

此wxs将把文件放入MSI中

<Component Id="myIni.ini" Guid="*">
  <File Id="myIni.ini" Name="myIni.ini" KeyPath="yes" Source="!(wix.Files)\myIni.ini">
    <CopyFile Id="CopyIni" DestinationProperty="TARGETDIR" />
  </File>
</Component>

根据的windows installer文档,它指向“包含源CAB文件的根目录或安装包的源文件树”

因此,要么您不知道SourceDir是预定义的windows installer属性,要么您正试图从包含msi的安装介质中复制未打包的文件。在后一种情况下,像安装普通组件一样安装该文件可能更有意义,以便正确卸载该文件

编辑:我已经测试了“从安装介质复制”方案,它对我很有效。另外,我安装了

misexec /lvx* install.log /i mymsi.msi
日志显示文件被复制了。在你的情况下,日志上写的是什么

Edit2:虽然CopyFile对我有效,但更好的解决方案是向WX添加未压缩介质,如下所示:

<Media Id='2'/>
<File Source='path\to\default\config.ini' Compressed='no' DiskId='2' />

然后为可自定义的配置文件调整File元素,如下所示:

<Media Id='2'/>
<File Source='path\to\default\config.ini' Compressed='no' DiskId='2' />


这将使安装程序在与msi相同的文件夹中查找config.ini,结合了可自定义性和干净卸载的优点。

它位于文件或组件父元素下?CopyFile现在位于单独的组件父元素下。如果无法轻松完成,将执行自定义操作。我想做的是通过在msi文件旁边放一个ini文件,让支持人员有机会自定义设置。这将包含一些每个客户端的设置。显然,每个客户机都可以通过转换(mst)来完成,但不要认为支持人员可以轻松创建这些转换。它没有显示任何正在发生的事情。MoveFiles已编写脚本,但稍后不会发生文件复制。你到底是怎么做到的?代码片段?我只是复制粘贴了你的代码片段来测试它,它对我有用。。。但是,正如我上面解释的,你可以尝试一下高级的“未压缩介质”选项。我觉得自己很愚蠢:文件名不对!:-)它也在这里工作。我也想出了第二种媒体(恼怒地),并将尝试一下。目前,我已经为unistall部件删除了文件*.ini。谢谢你的提示。