SQL更新/迁移 - 如何创建Windows安装程序?

18
基本上,我们以手动安装程序(Windows PowerShell脚本)的形式发布我们的更改/修复。它将通过读取配置文件的值(我们将在此文件中配置.dll和SQL脚本的位置)在特定位置安装指定的.dll和SQL脚本文件。同样的PowerShell脚本还具有卸载代码,以回滚特定的更改集。
是否有任何选项或机制可以为上述要求创建Windows安装程序?
6个回答

38

简短版本:已经有很多答案了 - 我主要只会添加一些链接到现有的答案。 这里是我之前关于这个话题的简短回答

更高的“浏览性”:上面的答案采用了更简单的格式,列出了当前最重要的部署工具的列表视图。赶时间?试试这些,选择一个。以下是更多详细信息和一些进一步的“讨论”。


部署工具

有许多工具可用于创建各种类型的安装程序/ setup.exe 文件。以下是大多数工具的简要描述链接:

我建议选择MSI。具体使用哪种工具不太明显。请参阅下面的最后一节,其中包含有关不同工具优缺点的描述链接。

自动更新?: 各种创建自动更新包的方法


为什么选择MSI?MSI的主要优势: MSI (Windows Installer)是企业部署的标准,因为与以前的安装技术相比,它提供了许多重要的企业优势。这些好处主要集中在可靠的远程管理标准化上,这是关键的企业部署问题。 简而言之,最重要的特定好处可能是:
  1. 可靠的静默运行(标准化和完全可抑制的GUI)
  2. 隐式可用的卸载(在处理旧版设置时会出现噩梦)
  3. 透明度(安装程序的半透明和可检查性质 - 除编译的CA外)
  4. 提升的安装权限(没有混乱的临时管理员权限 - 安装通过Active Directory广告、组策略或远程管理提升。这里有一些限制 - 只有MSI安装序列的一部分运行提升,并且安装程序本身必须正确编写才能正确工作)。更多信息
  5. 标准化命令行(无需寻找“秘密”开关)
  6. 管理安装(文件提取 - 对于企业重新打包至关重要)
  7. 详细记录(确实有帮助和详细的 :-) )
  8. 标准化软件包定制(转换 - 数据库片段)
  9. 回滚支持(可以撤消失败的安装所做的更改)
  10. 清单(管理和报告:完全注册已安装的内容及其位置)
  11. Active Directory / GP集成
总之,这产生了MSI的整体好处:在大型企业环境中,为繁忙的系统管理员提供可靠的远程部署管理。尽管技术复杂且古怪,但这些都是关键的好处。
许多人发现处理这项技术具有挑战性 - 存在一些常见陷阱(我在此处底部写了一份非常奇怪的、临时的MSI反模式描述 - 与问题无关,但就是这样 - 有时候事情会在冲动之下被写出来,对于任何正在写作的人来说都是令人惊讶的 - 它并不是伟大的,只是务实的细节。第一个链接也是如此)。

上面和这里链接的serverfault答案提供了这些企业MSI收益的更加详细的描述以及需要注意的一些挑战。

同一个serverfault问题还有第二个回答描述了MSI文件中常见的设计错误。一个非常混乱的"脑力倾泻"。


MSIX / AppX

需要指出的是,微软现在推出的打包平台是基于AppX应用程序框架的MSIX。不过,MSI在企业部署领域有很高的渗透率,因此还不清楚MSI将保持多久的相关性。所有已建立的部署工具都在努力支持MSIX、AppX和其他部署技术(也包括虚拟化)。

悄悄加入一些链接


AppV

在现实的企业世界中,AppV(应用程序虚拟化/应用程序流式处理)已经成为一种常见的部署解决方案(Tim Mangan的博客)。


选择MSI工具

MSI创建的行业领先者通常是Advanced Installer, Installshield, PACE Suite和开源解决方案WiX(其商业分支为Firegiant) - 您似乎对后者有些了解。

我会给您一些以前写过的答案链接,其中包含一些观点和事实,混合在一起帮助人们决定他们需要什么样的工具,但并不声称是“正确”的。这总是危险的尝试 - 多年的经验意味着获得的知识,但也预示着习得的坏习惯和怪癖。最终结果是来自于一个有缺陷的专业人士的诚实观点,他只能提供帮助的意愿:


2
MSIX/Appx似乎是一种非常有限的技术,没有完全支持(例如命名管道)。虽然你可能认为它只是一个简单的安装程序,但实际上应用程序运行后的方式完全不同。这些应用程序之间存在一些“不充分”的隔离,并且这些应用程序不应该被直接访问,即使是由用户(也是管理员)操作。这些应用程序通常(取决于注册表配置)安装在C:\ Program Files \ WindowsApps中,这是相当隐藏的。 - Rolice

5

1

0

还有一些付费工具,例如Advanced Installer(由Caphyon开发)和InstallShield(由Flexera开发),您可以使用它们来构建MSI包。它们的主要优点是相当容易创建安装程序项目(可通过UI设计师进行配置),但它们大多数功能都是收费的。


-1
如果你想要一个像Wix-Toolset一样的脚本工具来帮助你,那么你可以尝试使用WixPie。基础版本可以创建msi或exe文件,而且基础版本是免费的。

-1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接