因此,这里的情况。

我有2个ASP.NET网站 +安装安装的一些Winform应用程序。它们都表示为合并模块到设置项目中。

当前,当我们要更新应用程序的全局版本时,我们必须将所有版本更新为ASP.NET网站和其他内容。我知道可以将版本检测到ASP.NET应用程序的汇编信息中,这很容易。这里的困难是检测“全局”设置版本。 (在这里说网站是1.5版,但全局设置本身是版本3.4)。

在某个时候,我猜想,如果我可以找到setup.exe/setup.msi文件,我可以用反射浏览它,但这并不是最好的解决方案。我们将每个版本的每个设置存储在服务器上的单独文件夹(例如c: setups product 1.0 setup.exe,c: setup product product setup.exe等。)

有什么建议么 ?

有帮助吗?

解决方案

定义“全局”设置版本。您是说每个补丁都会更新一些但不是所有的组件,因此任何一个组件的版本,甚至根本都无法反映出最后安装的补丁?

3个选项:

  • 将全局版本的信息保留在每个配置文件中,并将更新到每次安装组件的每个配置(不建议)中。
  • 提供共享的配置文件或其他配置的引用到“主”配置,可以从任何可执行项目引用,并确保每次都会更新配置。
  • 维护包含软件包的全局版本的注册表密钥。

在这三个中,我会选择最后一个,因为安装和修补程序分布在系统的几个区域上,但是每个区域都应该能够读取软件注册表密钥(如果不更新)。这个过程并不困难;您可以引用static System.win32.Registry对象获取用于LocalMachine,CurrentUser等的基本键,并且可以从那里通过RegistryKey对象导航(或使用键路径从scratch创建一个)来遍历树。您可以在各种Web和app.config文件中使用AppSetting指定密钥路径;这不应该像密钥本身的价值那样频繁。

其他提示

如果您正在从一个MSI中安装多个软件包,那么最好让MSI以ARP列出,然后将其“全局设置”的版本轻松适用于未来的MSI。在不知道您使用哪种技术来创建设置的情况下,很难提供更多可靠的建议,但是在Wix(Windows Installer XML)中,您只需要包含一个升级元素,该元素会自动为您服务。大多数技术应该有某种方式来检查当前的安装版本。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top