8

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

我做了<CopyFile Id="CopyIniFile" DestinationProperty="INSTALLDIR" SourceProperty="SOURCEDIR" SourceName="Dreem15.ini" Delete="no" />,但它似乎什么也没做。日志文件没有多大帮助。

我已经成功地用 CopyFile 做了一个更复杂的场景,我对这个简单的场景感到困惑。

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

|FileKey |组件 |SourceName |SourceFolder|DestFolder|选项
|CopyIniFile |CoAppLicAndIni|Dreem15.ini |SOURCEDIR |INSTALLDIR|0
|MoveDataFile|CoAppLicAndIni|Dreem10_Personal.mdf|DB_DIR10 |INSTALLDIR|0

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

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

2 回答 2

4

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

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

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

misexec /lvx* install.log /i mymsi.msi

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

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

<Media Id='2'/>

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

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

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

于 2009-01-21T20:10:02.763 回答
1

您可以DestinationDirectory="INSTALLDIR"改用,还是必须即时创建属性?

WIX Wiki CopyFile 元素

这个 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>
于 2009-01-21T15:56:02.403 回答