【问题标题】:Using WiX to generate an installer for an ASP.Net MVC website使用 WiX 为 ASP.Net MVC 网站生成安装程序
【发布时间】:2012-01-20 20:43:12
【问题描述】:

有没有人使用 WiX 为 ASP.Net MVC 网站生成安装程序?您是否从 Web 项目中获取文件?我找不到任何这样做的好例子。似乎没有记录的方式来包含所有正确的文件,只有正确的文件并将它们放在正确的位置。

如果在安装程序项目中添加网站项目作为引用,并在属性中设置harvest=True,则所有网站文件都被捕获,但有问题:

  • 包含一些不应复制的文件,例如packages.configWeb.Debug.config 似乎没有任何明确或简单的方法可以排除它们(as per this discussion)。
  • .website dll 文件位于错误位置,位于根目录而不是 bin 文件夹 (as per this discussion)

但是,如果您不使用收获,则需要手动引用很多文件(例如,仅在 \Content\ 下,我在 5 个文件夹中就有 58 个文件。其中大部分是 jQuery UI)并且它们会不时更改, WiX 文件列表中很容易遗漏错误和遗漏。所以它确实应该自动保持同步。

我不同意应该在 WiX 中明确指定文件列表而不是动态生成的想法(这似乎是第一个链接所建议的,措辞不是很清楚)。如果我需要从源代码控制系统中删除我将删除的文件,则无需进行额外的工作来维护两个并行但不同的目录——源代码控制中的一组文件,以及 WiX 中列出的相同文件。真相应该有一个版本。网站源代码树中的所有文件(除了某些在运行时不使用的已知异常,例如packages.config)都应包含在部署中。

出于公司原因,我没有太多选择在此项目中使用 WiX

【问题讨论】:

  • 好吧,我不同意你不同意。顺便说一句,这里真的有问题吗?多年来,我编写了数百个安装程序,其中许多是多实例 n 层解决方案,包括 ASP.NET Web UI 和服务。我编写了自动化程序来交叉检查我的安装程序使用的内容和我的项目发布的内容是否相同。添加某些内容时,将文件添加到我的安装程序对我来说是微不足道的,最好的事情是我知道它是完美地完成的,而不是自动魔术。 (展开并祈祷。)

标签: asp.net-mvc wix installation


【解决方案1】:

在我们的 MVC 3 项目中,我们使用 Paraffin 为安装程序收集文件。例如,可以使用“-ext”忽略带扩展名的文件,使用“regExExclude”忽略匹配正则表达式的文件名等

Paraffin 还保持正确的结构,您的所有文件都将位于项目中出现的正确文件夹中。

【讨论】:

    【解决方案2】:

    我使用我编写的一个名为 ISWIX 的程序,它使编写 wxs 合并模块成为像 InstallShield 这样的简单拖放操作。然后,我在处理 UI 和 IIS 配置的安装程序中使用该合并模块。

    我还有构建后自动化功能,可以提取 MSI 的内容并将其与项目发布的内容进行比较。如果存在增量,我将无法构建,您必须 a)将其添加到 wxs 或 b)将其从发布中删除。

    我发现从构建到构建的文件数量很少,而且这个系统不难维护。好处是所有内容都保持 100% 有意创作,并且文件永远不会从安装程序中神奇地添加或删除,除非您打算这样做。动态安装程序生成不值得冒险,大多数认为它的人甚至不知道这些风险是什么。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多