我不知道如何从安装程序msi中知道它将安装的应用程序的AssemblyVersion是什么。
我想每隔几个小时请求一次网络位置,检查setup.msi以检测更改,然后提示用户进行更新。
我能把这两个AssemblyVersions绑在一起吗?所以当我增加应用程序时,它会增加安装程序?这样我就可以检查安装程序的版本了?
或者,有没有办法从msi中知道它将安装哪个应用程序版本?
或者我应该以一种不同的方式来做这件事,比如在网络共享上放置一个带有修订号的文本文件?(不优先)
注:我使用SetupProject创建了我的安装程序。
发布于 2018-04-14 18:37:30
冒着重复Michael U的一些回答的风险,我要指出,在Windows环境中没有人这样做。当Visual构建中的任何文件都需要部署到客户端时,VS安装项目的唯一解决方案是进行重大升级,增加安装项目的版本(接受更改),将RemovePreviousVersions设置为true,并且必须增加需要更新的文件的文件版本。您不需要更改AssemblyVersion来完成这个任务,但是您确实需要增加AssemblyFileversion。这应有助于:
https://www.red-gate.com/simple-talk/dotnet/visual-studio/updates-to-setup-projects/
但它缺少了关于更新文件版本的部分。
一般来说,更新机制相当简单。主要的升级是基于UpgradeCode的,所以您的应用程序只需要在某个地方调用web服务以传递当前的ProductVersion和UpgradeCode,然后您需要下载任何高于当前ProductVersion的版本,然后安装它。这是一个客户端系统上适用于多个产品的一般想法,如果您知道只有一个产品,那么就有更简单的解决方案。
发布于 2018-04-13 13:16:03
(我通常在这里谈论Windows,因为我对SetupProject不太熟悉。)
当然,如果构建系统支持msi和程序集的版本控制信息,并且将程序集版本限制为可表示为ProductVersion的版本,则可以将其绑定。注意,如果要使用Windows升级逻辑,则必须对前三个字段进行有意义的更改,因为Windows安装程序忽略第四个字段。
如果您可以打开.msi文件以执行自己的逻辑(例如使用或包装器(如DTF) ),则应该能够从存储在msi数据库中的元数据中读取程序集版本。特别是,您将希望从MsiAssemblyName表或文件表读取值。请注意,MsiAssemblyName表包含程序集版本,文件表包含文件版本;只有确保了这些值,这些值才会同步。
https://stackoverflow.com/questions/49816435
复制相似问题