嗨我正在使用WIX将文件安装到目录中,代码如下.
<Directory Id="CMSICONSDIR" Name="CMSIcons">
<Component Id="CMSICONSDIR_C" Guid="B0328FBF-D9F7-4278-B16C-28650016FF86" SharedDllRefCount="no" KeyPath="no" NeverOverwrite="no" Permanent="no" Transitive="no" Location="either">
<CreateFolder/>
<File Id="AddCamera.png" Name="AddCamera.png" DiskId="1" Source="..\..\OrionVEWorld\bin\Release\CMSICons\AddCamera.png" KeyPath="no" />
<File Id="aldownloadsmall.png" Name="al-download-small.png" DiskId="1" Source="..\..\OrionVEWorld\bin\Release\CMSICons\al-download-small.png" KeyPath="no" />
Run Code Online (Sandbox Code Playgroud)
我的应用程序的工作方式是用户可以在该目录中复制自己的文件,覆盖他们喜欢的内容.
问题是当我进行下一次安装以进行更新时,它会使用安装中规定的文件覆盖这些文件.
我如何确保在运行安装时它不会覆盖那里的现有文件,只会添加新文件.
不幸的是,在其他情况下,我确实需要覆盖那里的文件.
我有一个升级脚本部分,可以影响这一点,如下所示
<Upgrade Id="$(var.UpgradeCode)">
<UpgradeVersion Minimum="$(var.ProductVersion)" OnlyDetect="no" Property="NEWERVERSIONDETECTED"/>
<UpgradeVersion Minimum="1.0.0.0"
IncludeMinimum="yes"
OnlyDetect="no"
Maximum="$(var.ProductVersion)"
IncludeMaximum="no"
Property="PREVIOUSVERSIONSINSTALLED" />
</Upgrade>
Run Code Online (Sandbox Code Playgroud)
任何建议表示赞赏.
您可以尝试通过修改RemoveExistingProducts操作的顺序来更改升级顺序.您可以在InstallFinalize之后放置它(链接文章中没有4个选项).
同时此文章解释了Windows安装程序如何处理整个文件覆盖逻辑.
编辑:还为组件添加"永不覆盖"属性.
归档时间: |
|
查看次数: |
4547 次 |
最近记录: |