有没有办法从产品中检测设置版本?
-
01-10-2019 - |
题
因此,这里的情况。
我有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)中,您只需要包含一个升级元素,该元素会自动为您服务。大多数技术应该有某种方式来检查当前的安装版本。