WiX:CopyFile属性

wqw*_*wqw 8 wix

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

我做了<CopyFile Id="CopyIniFile" DestinationProperty="INSTALLDIR" SourceProperty="SOURCEDIR" SourceName="Dreem15.ini" Delete="no" />但似乎没有做任何事情.日志文件没有多大帮助.

我已经成功地用CopyFile做了一个更精细的场景,我被这个简单的方法所困扰.

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

|FileKey     |Component     |SourceName          |SourceFolder|DestFolder|Options
|CopyIniFile |CoAppLicAndIni|Dreem15.ini         |SOURCEDIR   |INSTALLDIR|0
|MoveDataFile|CoAppLicAndIni|Dreem10_Personal.mdf|DB_DIR10    |INSTALLDIR|0

第二个是工作.DB_DIR10像这样在注册表中搜索

<Property Id="DB_DIR10">
    <RegistrySearch Id='DbDirSearch10' Type='raw' Root='HKLM' Key='Software\$(var.CompanyName)\$(var.MsdeInstance)' Name='Dreem10_Personal' />
</Property>

Wim*_*nen 4

根据Windows安装程序文档中的sourcedir属性,它指向“包含安装包的源压缩文件或源文件树的根目录”。

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

编辑:我已经测试了“从安装介质复制”场景,它对我有用。另外,我已经安装了

misexec /lvx* install.log /i mymsi.msi
Run Code Online (Sandbox Code Playgroud)

并且日志确实显示了正在复制的文件。在你的情况下,日志说了什么?

Edit2:虽然 CopyFile 对我有用,但更好的解决方案是将未压缩的媒体添加到您的 wxs 中,如下所示:

<Media Id='2'/>
Run Code Online (Sandbox Code Playgroud)

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

<File Source='path\to\default\config.ini' Compressed='no' DiskId='2' />
Run Code Online (Sandbox Code Playgroud)

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