Installation C#部署在安装上保留文件

Installation C#部署在安装上保留文件,installation,windows-installer,Installation,Windows Installer,我已经使用VisualStudio创建了一个安装和部署项目,并安装了安装程序。 安装安装程序后,它会复制一些文件(XML),这些文件在使用应用程序时是以编程方式配置的。 现在,如果用户再次重新安装此设置,我需要询问用户是否需要覆盖或保留这些配置的文件 你知道如何做到这一点吗 谢谢和问候, 弗兰查找Windows Installer 简而言之,假设您引用的这些XML文件是未版本化的文本文件,MSI将比较创建日期和修改日期,并且不会替换您所说的以编程方式更新的XML文件(安装后时间) 我建议您需要考

我已经使用VisualStudio创建了一个安装和部署项目,并安装了安装程序。 安装安装程序后,它会复制一些文件(XML),这些文件在使用应用程序时是以编程方式配置的。 现在,如果用户再次重新安装此设置,我需要询问用户是否需要覆盖或保留这些配置的文件

你知道如何做到这一点吗

谢谢和问候, 弗兰

查找Windows Installer

简而言之,假设您引用的这些XML文件是未版本化的文本文件,MSI将比较创建日期和修改日期,并且不会替换您所说的以编程方式更新的XML文件(安装后时间)

我建议您需要考虑几个其他变量,以确保事情按您的预期工作:以及属性。

查看Windows安装程序。

简而言之,假设您引用的这些XML文件是未版本化的文本文件,MSI将比较创建日期和修改日期,并且不会替换您所说的以编程方式更新的XML文件(安装后时间)


我会建议你需要考虑的其他变量,以确保事情按你预期的那样工作:以及属性。

< P>我发现,接近这种情况的最佳方法是在应用程序中实现“保存更改”逻辑,而不是通过安装程序。由于所有逻辑都嵌入到主EXE文件中,因此这可以避免使设置复杂化,并对配置过程产生更好的控制。这意味着您可以逐步完成该过程,并以正常的“开发方式”对其进行调试

要实现这一点,您可以将“基本配置”文件安装到只读位置,例如

  • %ProgramFiles%\MyCompany\MyApp\MyConfig**
然后,应用程序可以在启动时检测现有配置文件是否存在于用户配置文件中(或在可写共享位置中),并询问用户新配置文件是否应覆盖现有配置文件。您还可以轻松地为旧配置实现备份功能

为了在部署后每个用户只问一次问题,通常的做法是用最新安装的应用程序版本标记HKLM,然后在复制操作完成或用户取消复制操作时在HKCU中写入相应的标记:

  • HKLM\Software\MyCompany\MyApp\Version=2.0.0
  • HKCU\Software\MyCompany\MyApp\Version=1.0.0

在上述场景中,已安装应用程序的2.0.0版,但尚未为相关用户运行每个用户配置副本。一旦运行HKCU版本,它将被设置为2.0.0,并且在HKLM增加之前,操作不会再次运行。

我发现处理这种情况的最佳方法是在应用程序中实现“保留更改”逻辑,而不是通过设置。由于所有逻辑都嵌入到主EXE文件中,因此这可以避免使设置复杂化,并对配置过程产生更好的控制。这意味着您可以逐步完成该过程,并以正常的“开发方式”对其进行调试

要实现这一点,您可以将“基本配置”文件安装到只读位置,例如

  • %ProgramFiles%\MyCompany\MyApp\MyConfig**
然后,应用程序可以在启动时检测现有配置文件是否存在于用户配置文件中(或在可写共享位置中),并询问用户新配置文件是否应覆盖现有配置文件。您还可以轻松地为旧配置实现备份功能

为了在部署后每个用户只问一次问题,通常的做法是用最新安装的应用程序版本标记HKLM,然后在复制操作完成或用户取消复制操作时在HKCU中写入相应的标记:

  • HKLM\Software\MyCompany\MyApp\Version=2.0.0
  • HKCU\Software\MyCompany\MyApp\Version=1.0.0

在上述场景中,已安装应用程序的2.0.0版,但尚未为相关用户运行每个用户配置副本。一旦运行,HKCU版本将设置为2.0.0,并且在HKLM增加之前,操作不会再次运行。

你好,威廉,谢谢你的回复,但我仍然很难理解如何实现将配置文件保存为所述未版本文件。你能给我举个例子吗?提前谢谢。嗨,威廉,谢谢你的回复,但我仍然觉得很难理解我需要如何实现保存配置文件,如所说的未版本文件。你能给我举个例子吗?提前谢谢。