我遇到像here这样的问题。我有一个.config
文件要从源目录(我的.msi
文件所在的位置)复制到我的安装目录。
我尝试了几件事:
我试过的第一件事:
<DirectoryRef Id="ProgramFilesFolder">
<Component Id="$(var.productFamily)$(var.productSummary).config" Guid="$(var.GUID_CMP_DemoConfig)" KeyPath="yes">
<CopyFile Id="$(var.productFamily)$(var.productSummary).config"
SourceName="$(var.productFamily)$(var.productSummary).exe.config"
SourceProperty="SOURCEDIR"
DestinationDirectory="$(var.productFamily)$(var.productType)"
DestinationName="$(var.productFamily)$(var.productSummary).exe.config"
>
</CopyFile>
</Component>
</DirectoryRef>
但是这个方法失败了,因为它试图在安装应用程序之前复制文件,所以我的目录仍然不存在。
我试过的第二件事:
将其添加为安装程序的另一个组件。
<Component Id="$(var.productFamily)$(var.productSummary).config" Guid="$(var.GUID_CMP_DemoConfig)">
<File Id="$(var.productFamily)$(var.productSummary).config"
Name="$(var.productFamily)$(var.productSummary).exe.config"
DiskId="1" KeyPath="yes"
Source="$(var.productFamily)$(var.productSummary).exe.config" >
</File>
</Component>
有了这个,我应该可以从安装程序的Release
文件夹复制到我的INSTALLDIR
,但是当我在VS 2010
上构建项目时,它找不到文件...
我试过的第三件事:
我尝试将SOURCEDIR
var更改为我自己的变量,因此我可以将其用作常规组件,执行this。但它不允许我更改变量名称。它说当试图改变它时:
heat.exe : error HEAT0319 : The '-out' or '-o' parameter must specify a file path.
所以我只想复制.msi
所在位置的文件,但我仍然无法做到......
有什么想法吗?
答案 0 :(得分:2)
您可以使用File元素上的Compressed属性将文件排除在构建时压缩到MSI中。然后,您可以根据具体情况替换此文件的内容。作者像平常一样正常安装,一切都会很好而不必做任何花哨的事情。
例如,以下内容添加Compressed
属性以覆盖Package
元素的默认压缩集:
<Component>
<File Source="$(var.productFamily)$(var.productSummary).exe.config"
Compressed='no' />
</File>
</Component>