【问题标题】:Can WiX act much like a script? Perhaps there is an alternative [closed]WiX 可以像脚本一样工作吗?也许有另一种选择[关闭]
【发布时间】:2014-07-23 16:42:43
【问题描述】:

我正在寻找一种解决方案来创建一个必须能够执行以下操作的安装程序:

  • 在构建安装程序 exe 之前从多个服务器(使用 FTP、SVN 和 HTTP)收集资源(更新)
  • 使用更新版本(自动)编译(以便可以使用快捷方式完成)

安装程序构建完成后,它被复制到没有互联网连接的机器上,应该能够:

  • 将 Oracle 数据库更新到特定版本(使用安装程序获取资源时下载的 pl/sql 文件
  • 根据版本号更新软件(替换文件) - 信息可以存储在注册表中
  • 通过替换特定文件 (.ini) 中的字符串来更新软件
  • 安装 windows 的服务和角色
  • 使用 IIS(因此添加应用程序池等)
  • 使用证书存储(安装 CA 等)

基本上,上面的许多事情(除了应用程序/oracle 更新程序)都可以使用 cmd.exe/PowerShell 并检查返回码来完成。

到目前为止,我一直在使用 NSIS 来完成更简单的任务,是的,代码看起来很长,但条件构建和循环非常明显。

我读到了有关 WiX 的文章,人们声称它很难学习,但您将来会受益。为什么?因为自动修复/卸载功能?

我想知道用 XML(函数、循环、条件)编写类似编程的代码是多么容易。

【问题讨论】:

  • WiX 很难学,因为 MSI 很难学。 WiX 只是 MSI 之上的一个抽象,用于创作 MSI。 MSI 很难学,因为教它的人很少,书面资源晦涩难懂,而且模型与大多数开发人员习惯的模型大不相同。
  • 顺便说一句,可以从 MSI 中删除某些标准操作,以便它永远不会向系统注册自己。从这个意义上说,它可以用作复杂的脚本。微软将这种技术用于它的“Mr FixIt”包。

标签: powershell wix windows-installer nsis


【解决方案1】:

您的第一组项目符号不是安装程序的功能,而是您的构建自动化/持续集成系统的功能。

您的第二组项目符号均由 WiX 实现,除了 Oracle。本机仅支持 MSSQL。

WiX 是一种创作 Windows Installer (MSI) 数据库的工具。重要的是要了解 MSI 不是一种脚本语言。它不是命令式(过程式或 OO )编程模型,而是声明式编程模型。

MSI 将如何做某事从做什么中抽象出来。表数据(WiX 元素和属性)描述了需要做什么,MSI 标准操作和 WiX 内置自定义操作实现了如何做。 MSI 在安装时评估表数据并生成脚本以在安装事务中安装、卸载、回滚和提交安装更改。

这很重要的原因是,一旦您了解了这些模式(我承认这是一座很难攀登的山),您的安装程序就会变得更加简单、健壮和可扩展。我过去曾使用脚本语言编写过大量安装程序,使用 MSI 后我的工作效率和可靠性要好得多。

【讨论】:

    【解决方案2】:

    在我看来,您使用哪个更大的安装程序解决方案并不重要,您的要求需要一个可以通过脚本自定义的安装程序。所以学习这种或那种脚本语言并不容易或困难。

    WiX 可以做所有这些事情,你想做的事情。它有这个机会: - 有条件的构建 - 自定义脚本 - 使用自定义参数 - 可以通过名为 build 的控制台自动化

    另一种选择是 InnoSetup,它不需要任何成本,也可以在上面做所有事情。链接:http://www.jrsoftware.org/isinfo.php

    我不能说这两个系统是否都支持 MAC 或 Windows 以外的其他操作系统。

    您选择哪个安装程序并不重要,根据您的要求,没有安装程序可以在没有自定义的情况下执行安装过程。而且你必须学习依赖的脚本语言。

    希望我的回答有帮助?!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-21
      • 2020-12-18
      • 2012-01-10
      • 2021-08-16
      • 2022-11-02
      • 1970-01-01
      相关资源
      最近更新 更多