所以,这是这里的情况。
我有两个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 1.5 \ Setup.exe等)。
有什么建议吗?
答案 0 :(得分:1)
定义“全局”设置版本。您是说每个补丁更新一些但不是所有程序集,因此任何一个程序集的版本,甚至任何程序集的版本都可能不会反映最后安装的补丁?
3个选项:
在这三个中,我会选择最后一个,因为安装和修补分布在系统的几个区域,但每个区域应该能够读取软件注册表项(如果不更新它)。这个过程并不困难;您可以引用静态System.Win32.Registry对象来获取LocalMachine,CurrentUser等的基本键,然后您可以通过浏览RegistryKey对象(或使用键路径从头创建一个)来遍历树。您可以在各种web和app.config文件中使用AppSetting指定密钥路径;这不应该像密钥本身的值那样频繁地改变。
答案 1 :(得分:1)
如果您要从一个MSI安装多个软件包,那么最好让MSI在ARP中列出,然后这个“全局设置”的版本将随时可供未来的MSI使用。在不知道您使用哪种技术来创建设置的情况下,很难提供更可靠的建议,但在WiX(Windows安装程序XML)中,您只需要包含一个升级元素,它将自动为您解决此问题。大多数技术都应该有一些方法可以检查当前的安装版本。