【问题标题】:Adjust .msi package from ASP.NET web app从 ASP.NET Web 应用程序调整 .msi 包
【发布时间】:2011-12-20 21:07:59
【问题描述】:

让我解释一下我的情况。我需要通过我的 Web 应用程序(用 C# 为 ASP NET 编写)分发 Windows 安装包(.msi 类型),但我需要在下载之前从我的 Web 应用程序动态更改该 .msi 包。也就是说,msi 包在安装过程中会将某些值添加到 Windows 注册表中,因此我需要从我的 Web 应用程序中设置这些值。

这可能吗?如果可以,我该怎么做?

【问题讨论】:

  • 我相信您可以通过项目属性窗口设置构建事件.. 并没有真正尝试设置它传递参数,但我相信这是可能的.. 我可能错了

标签: c# asp.net web-applications installation windows-installer


【解决方案1】:

这听起来很棘手。我从未尝试过即时更新 MSI,但我们在类似情况下所做的是将可变信息(例如配置文件)作为未压缩文件包含在 MSI 旁边,然后更新它们并将所有内容压缩到自解压可执行文件中然后将其交付给请求者。

它不是太慢,但我不会尝试每天下载 10,000 次。

【讨论】:

    【解决方案2】:

    我在这里只是从臀部拍摄,但是如何将设置项目与资源文件放在一起。让 MSI 项目读取注册表值的资源文件。编写将/插入内容写入资源文件并调用 MSBuild(通过 Process 类)以根据需要构建 MSI 的内容。

    我几乎可以肯定这不会扩展,但可能是您的解决方案?

    【讨论】:

      【解决方案3】:

      您的应用程序可以直接使用例如编辑 .msi 文件。 WIX (http://wix.codeplex.com) 附带的 DTF 库。 您可以通过使用属性并在属性表中更改它们的默认值来参数化现有的注册表内容,或者只是向注册表表添加新行。

      无论如何 - 要执行此操作,您需要一些有关 Windows 安装程序和安装程序数据库(.msi 文件)的知识。所有常用表都记录在这里:http://msdn.microsoft.com/en-us/library/windows/desktop/aa368259(v=VS.85).aspx

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-02-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-21
        • 2011-03-05
        • 1970-01-01
        相关资源
        最近更新 更多