【问题标题】:How to programmatically retrieve installer version from Visual Studio Setup Project如何以编程方式从 Visual Studio 安装项目中检索安装程序版本
【发布时间】:2009-12-09 03:38:55
【问题描述】:

我已经用 C# 编写了一个应用程序,并设置了一个单独的安装项目来为该应用程序创建 MSI 安装程序。我想知道是否可以检索安装程序的版本并将其显示在我的应用程序的“关于”对话框中。

【问题讨论】:

  • 我也一直想知道怎么做!
  • 请说明您是希望将其硬编码到您的 UI 中还是在运行时动态查找

标签: c# installation


【解决方案1】:

一般而言,您会查看当前程序集的版本以获取此类内容,查找 MSI 需要通过注册表搜索来查找 MSI,然后通过一些互操作来使用某些 COM 接口提取版本。

要从这些方面开始,请看这里:http://www.codeproject.com/KB/cs/msiinterop.aspx,这是很多工作。

而只是使用:

Assembly.GetExecutingAssembly().GetName().Version;

并确保您的应用程序版本与您的 msi 版本相匹配。

【讨论】:

  • 我已经这样做了,但我想以某种方式检索安装程序版本。看来这将是一个漫长的考验,只是为了获得版本。
  • -1 吨的工作与否,这个答案没有解决用户的问题。
【解决方案2】:

MSI 就像一个具有完整 API 的数据库。您的版本号和其他相关数据位于 MSI 的数据库中。

您可以使用类似 sql 的语法查询数据库。

http://msdn.microsoft.com/en-us/library/aa369426(VS.85).aspx

如何查询的示例: http://msdn.microsoft.com/en-us/library/aa372021.aspx

更好的例子和脚本:

http://msdn.microsoft.com/en-us/library/aa368562(VS.85).aspx

【讨论】:

  • 我要查询什么?我想在关于对话框中显示安装程序的版本号。
  • 安装程序版本和其他信息位于 MSI 的数据库结构中。您需要为它查询 MSI,或调用上面链接中列出的方法之一。
【解决方案3】:

一个想法是将安装程序版本存储在注册表中或在安装时在 application.exe.config 中预定义。 稍后关于框从那里加载版本号。

【讨论】:

    猜你喜欢
    • 2010-09-07
    • 2011-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-04
    • 1970-01-01
    相关资源
    最近更新 更多