wix v3.8重大升级时如何保留配置文件?

2024-02-21

我想在 msi 安装程序进行重大升级时保留配置文件。对于配置文件,我在安装时进行了更改。代码如下:

<Component Id="MODIFYCONFIG" Guid="6A1D7762-B707-4084-A01F-6F936CC159CE" Win64="yes">
    <File Id="Application.config" Name="Application.config" Vital="yes" KeyPath="yes" Source="Resource\Application.config"></File>
    <util:XmlFile Id="SetValueIP" Action="setValue" Permanent="yes" File="[#Application.config]"
         ElementPath="/configuration/applicationSettings/Application.Properties.Settings/setting[\[]@name='IpAddress'[\]]/value"  Value="[IPADDRESS]" Sequence="1"/>
    <util:XmlFile Id="SetValuePort" Action="setValue" Permanent="yes" File="[#Application.config]"
         ElementPath="/configuration/applicationSettings/Application.Properties.Settings/setting[\[]@name='IpPort'[\]]/value"  Value="[PORT]" Sequence="2"/>
    <Condition>Not Installed</Condition>
  </Component>
  <Component Id="KEEPCONFIG" Guid="F7F173AA-C2FD-4017-BFBC-B81852A671E7" Win64="yes">
    <RemoveFile Id="ApplicationConfig" Name="Application.config" On="uninstall"/>
    <Condition>(REMOVE=ALL) AND (NOT UPGRADINGPRODUCTCODE)</Condition>
  </Component>

但是,当发生重大升级时,该文件不会保留。如何保留修改后的文件?


这为我解决了这个问题...配置文件通过次要/主要升级保留,并在卸载时完全删除。

Ref: Aaron Stebner:如何在 Windows Installer 主要升级期间保留用户自定义文件 https://learn.microsoft.com/en-us/archive/blogs/astebner/mailbag-how-to-retain-user-customized-files-during-a-windows-installer-major-upgrade

编辑:链接页面的摘要信息...

  1. 每个配置文件应有其自己的组件,其中配置文件被标记为组件的密钥路径。Windows Installer 将使用无版本控制的文件替换逻辑。
  2. 在“InstallFiles”操作之后添加“RemoveExistingProducts”操作。在删除旧 MSI 之前,将安装所有组件的新版本。当按此顺序完成时,组件的引用计数将增加到 2,但配置文件不会被替换,除非它们未经修改(因为未版本化的文件替换逻辑)。当旧的 MSI 被删除时,引用计数将减回 1,但文件不会被删除,因为引用计数不为 0。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

wix v3.8重大升级时如何保留配置文件? 的相关文章

随机推荐

  • 编辑构建 R 包时生成的默认 PDF 手册

    我已成功执行以下步骤来创建我自己的 R 包 创建包的骨架并粘贴 Rd NAMESPACE and DESCRIPTION files 被处决R CMD check package name 没有错误 它还生成了 2 个 pdf 其中之一包含
  • 具有动态数组的 VBA 字典

    我正在尝试创建包含动态数组的动态字典 电子表格中的示例行 Facility Name Contact Name Contact Role 设施和联系人之间的关系是M2M 我想重新创建一个如下所示的工作表 Contact Name Facil
  • 持久化图形数据 (Java)

    我有一个利用图形 树状 自定义结构的应用程序 这些结构不是真正的树 但几乎所有东西都连接在一起 数据量也很大 可以存在数百万个节点 树节点的类型可以不同 以使其更有趣 继承 我不想改变数据结构来适应持久性存储 我想保留这些数据而不需要太多额
  • 在两个不同模式中使用两个同名表时避免 Hibernate Annotation Exception

    我有两个表 都在两个不同的模式中命名为 Language 我们将它们称为 schema1 和 schema2 当我注释每个表的模型时 我的代码如下所示 实体 Table 名称 语言 目录 模式1 公开课语言 Entity Table nam
  • 资源 FullCalendar 中的固定列宽

    我正在使用支持资源视图的 FullCalendar 特殊版本 http tux fi jarnok fullcalendar resourceviews http tux fi jarnok fullcalendar resourcevie
  • SQL删除表中不重复的条目

    我有一个有两列的表格CountryCode CountryName 中存在重复条目countrycode 但我想删除不重复的条目并保留重复的行countrycode柱子 所以我想写一个SQL语句来做到这一点 我想我必须使用having 但不
  • Ruby on Rails 生成视图

    有没有办法使用railsgenerate命令单独生成视图 我也愿意安装一个 gem 来完成现有的任务 基本上 脚手架命令给了我太多的东西 我宁愿手动编写我的控制器 但是 使用记录表编写索引视图的效率不是很高 您可以使用控制器生成器生成控制器
  • Firefox 扩展将 Javascript 数组作为对象发送

    我在将 JavaScript 数组传递给我正在编写的附加组件时遇到问题附加生成器 https builder addons mozilla org 为了进行通信 我使用事件并使用数组发送事件 但附加组件 内容脚本 获取一个对象 而不是数组
  • 尝试获取最小整数

    所以我有4个清单 我想找出哪个 list size 是最低的 我可以找到最低的 但有些结果是相同的 这是 我拥有的 if EAmount lt DAmount EAmount lt GAmount EAmount lt IAmount Fi
  • 如何解决 flutter firebase 中的此 NoSuchMethodError

    我有这段代码 应该返回 userId 问题是它返回 null 因为用户已注销 override void initState TODO implement initState super initState try widget auth
  • 如何将字符串转换为浮点数? [复制]

    这个问题在这里已经有答案了 可能的重复 在 Objective C 中将字符串转换为浮点数 https stackoverflow com questions 3191034 convert string to float in objec
  • Grunt.js:在任务完成之前修改文件后立即触发 livereload

    我正在使用 Grunt 来编译带有指南针的 CSS 并触发浏览器 livereload 这些是我的手表任务 watch styles options spawn false files assetsDir scss dev min scss
  • React - ComponentDidMount 没有从 Redux 状态获取值

    I am getting the Redux state updated correctly Here is what the Redux state of updateNeeded is In this case it is true 我
  • 使用 SSL 从 NXlog 传送到 Logstash

    我让 NXLog 将我的 Windows 事件发送到另一台仅在 TCP 中正常工作的 Logstash 机器 但我想使用自签名证书加密流量 我想我对 SSL 有基本的了解 但对 NXLog 文档感到困惑 NXLog om ssl 文档显示
  • 将自定义命令添加到 qmake 中的现有目标

    有没有办法指定 在 pro文件中 要添加到标准目标的额外命令Makefile that qmake产生 例如 考虑distclean 可能需要额外的命令来 Remove files 从源树中清除运行时生成的输出文件 Etc 我想使用普通目标
  • 在其他导入与 pep8 发生冲突之前需要 matplotlib.use。忽略还是修复?

    我有一个 Python 脚本 其开头如下 usr bin env python import matplotlib matplotlib use Agg from matplotlib dates import strpdate2num i
  • 无法获取通用 ResponseEntity,其中 T 是通用类“SomeClass

    请帮我得到一个ResponseEntity
  • 如何使用 C# 实现 SAP GUI 自动化

    我想使用 C 语言自动化 SAP GUI 窗口 我可以用 VBScript 做到这一点 但代码重用很糟糕 此外 我想使用线程而不是运行 80 个或更多进程 在哪里可以找到有关如何执行此操作的任何文档和示例 这是我正在使用的代码 基本上 我面
  • 使用 PIL.Image 和 ctypes 进行像素操作

    我有一个 C 函数 可以对 8 位 RGB 值的原始 2D 数组进行一些像素操作 我得到的答复是c ubyte大批 我的代码大致如下 from ctypes import cdll CDLL Structure byref c utype
  • wix v3.8重大升级时如何保留配置文件?

    我想在 msi 安装程序进行重大升级时保留配置文件 对于配置文件 我在安装时进行了更改 代码如下