【问题标题】:Marking config file as 'Permanent'将配置文件标记为“永久”
【发布时间】:2013-07-20 06:02:40
【问题描述】:

如何将我的应用程序配置文件标记为“永久”,以便在卸载或升级期间不会删除/覆盖它? 'Permanent' 属性似乎只适用于 File System 级别的对象,而配置文件显示为我的 Primary Project Output 的 输出 之一> 对象,如果标记为永久,也会阻止 EXE 文件被删除。

我正在使用 VS2010 附带的标准 Windows Installer 项目,应用程序类型是 WinForms 桌面应用程序。

【问题讨论】:

  • 使用“项目输出”选择文件是一种方便但不是唯一的方法。您还可以使用“文件”来选择单个文件。

标签: .net visual-studio-2010 windows-installer


【解决方案1】:

我同意 Christoper 的观点,也许您不知道,在更新时无需保存潜在的用户设置更改。或者换句话说,如果您的文件在安装后发生更改,则任何 msi 更新都不会更改它永远(但卸载/删除有效)。

但是您正在谈论保护此文件不被卸载删除。 一方面,您可以尝试将其标记为永久性的,也许选择它的另一个答案,会有所帮助。我不太喜欢也不太了解那个工具。

但这里是良好的架构模式如何管理设置中的设置:

  • 应完全卸载安装程序,包括设置文件。但仅将其视为“设置”-默认值,而不是当前配置。
  • 也许您决定,您的配置取决于用户,这在应用程序本身中比在设置中更容易处理。

    1. 在程序启动时(不在您的设置中)在您的应用程序中启动一个特殊的配置操作/功能。

    2. 在此函数中,首先读取安装程序安装的配置文件(或注册表值)作为(主要是机器级)默认配置。

    3. 现在在您的应用程序中将实际配置保存到文件中,例如作为与用户相关的 .config 文件(在 %USERPROFILE% 中的某个位置,如 C:\Users\myuser\AppData\Local 中) 当然,您也可以将 %ProgramData% 用于机器级别或注册表(HKCU 或 HKLM)。 但现在这是实际配置,而不是默认配置。

=> 并且因为安装程序不知道这个实际的配置(文件),所以它不会卸载它也不会修改它,只有你可以在你的应用程序中进行。

=> 这种“模式”允许扩展利用设置格式,例如在 2.0 版本中添加新设置,并在您的应用程序中导入旧设置格式 V1.0。或者,更简单,忽略 2.0 版中的旧设置。

另一种方法是在 MSI 设置的用户特定部分进行复制,例如通过使用“DuplicateFiles”,但对于设置初学者和 Visual Studio,我都不推荐诸如用户相关设置资源之类的高级内容。在设置中不需要这样做,我上面的模式提供了更多的灵活性和安全性。

【讨论】:

  • 嗯...我明白你的建议了。我可以看到的一个缺点是我可能会错过 VS 为默认设置文件提供的开发时支持。我可以将控件直接绑定到设置,该设置会自动为我加载/保存值。使用不同的设置文件会杀死该功能,是吗?
  • 您可以使用任意数量的设置文件。如果您只想保存一个 myapp.exe.config 以及诸如背景颜色之类的内容,这是非常罕见的,您可以在设置中提供 myapp.exe.setupdefault.config 并在第一次启动应用程序时阅读此内容(例如对于每个用户)。有多种可能性。您可以在设置中包含或不包含 myapp.exe.config。我认为,如果不是,它会更强大,但这取决于您的策略,设置是否可以在卸载后继续存在。但一般来说,要支持用户特定的设置,您需要多个设置文件,例如
  • 最简单的解决方案是将您的单个设置文件(更准确地说,它是 MSI 组件)标记为永久,然后您的设置在卸载后仍然存在。没有我的模式那么强大,但对你来说可能就足够了。
【解决方案2】:

就个人而言,我在这里没有看到有效的要求。在默认文件版本控制规则下,如果配置文件在安装后已被修改,它现在包含用户数据,默认情况下不会被删除。默认情况下,它也不会在后续事务期间被覆盖,因为它包含用户数据。我通常看到的真正问题是,当软件的较新版本具有不同的架构时,您需要获取最新的架构和用户数据。 MSI 不会这样做,解决方案通常是 2 个配置文件。一个归安装程序所有,一个归应用所有。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-11
    • 1970-01-01
    • 1970-01-01
    • 2021-03-27
    相关资源
    最近更新 更多