用于内部业务应用程序的Windows Installer有意义吗?


14

我正在尝试对这种情况下的普遍性建立一个普遍的了解,以便我可以决定进一步进行下去是否有意义。

  1. 在具有以下特征的典型公司环境中是否欢迎安装程序?
    • 变更控制程序
    • 开发/质量保证/生产环境
    • 在各个领域(防火墙,数据库,窗口等)的指定部署团队。
  2. 是否可以将“石蕊试纸”应用于应用程序,以查看它是否是创建安装程序的理想选择?*
    • 安装程序是否足够简单,每个应用程序都应该有一个?
    • 安装人员甚至是正确的工具吗?
  3. 期望开发人员学习诸如WiX之类的东西来支持安装程序是否合理?
    • 一般而言,可维护性是一个问题,例如,创建安装程序是否是利基技能?

*

例如,我在生产服务器上的共享目录中有一组winform应用程序。特定的组可以从此目录运行应用程序,但是只有系统管理员才能修改可执行文件。当前的部署过程包括让管理员将可执行文件和库复制/粘贴到共享目录。

由于应用程序未安装在个人用户的计算机上,因此创建一个安装程序以将这些应用程序的新版本部署到共享目录是否有意义?

编辑 -

我觉得这里的答案提供了扎实的建议,所以我想分享我为当前项目提出的想法,在这个项目中我需要构建大量应用程序并将它们部署到单个文件夹中。

我找到了一个名为_PublishedApplications的NuGet程序包,该程序包模仿了Web项目的_PublishedWebsites的行为。想法是将NuGet软件包安装到项目中,并添加一个目标,该目标会将构建工件复制到输出路径中的_PublishedApplications目录中。通过从命令行运行MSBuild并指定outdir属性来激活此行为:

msbuild /p:Configuration=Release /p:outdir=C:\path\to\outdir MySolution.sln

这将为您提供类似于以下内容的目录结构:

  • C:\ path \ to \ outdir
    • _PublishedApplications \
      • 专案1 \
        • dlls, exes, etc.
      • 专案2 \
        • ...

从那里创建一个可以在各种环境中提取的zip相当简单。


6
如果必须提供安装程序,可以提供.msi安装程序吗?这些至少可以完全自动化,并且痛苦最小。(尽管对于偶尔需要自己更新的用户还是很容易理解的)
ZJR

以您的示例为例:我有一个脚本试图将生产目录重命名为临时名称,将所有应用程序文件复制到重命名的dir中,然后将生产目录重命名为其旧名称(并且在每个((!! ) 步)。优点是,只要有人使用旧版本,第一次重命名就会失败,并且您不会偶然破坏生产环境。一个好的管理员也许可以自己创建这样的脚本,但是如果您为他们提供了这样的“安装程序”,那么其他人可能会很感激。真正取决于您的组织。
布朗

@ Mark0978:我在这里闻到“ Linux”和“ Windows”的区别吗?这是这里的100%优惠主题。
布朗

Answers:


20

如果部署需要的工作比将相关文件复制到某个文件夹并运行EXE更为复杂安装程序总是有意义的。 如果需要采取其他步骤来正确设置产品,则有两种解决方法。

  1. 您可以写出一个名单供他人关注。人类就是人类,有人一定会搞砸它,然后打电话给您寻求帮助,因为您的程序运行不正确。
  2. 您可以写出计算机要遵循的列表(安装脚本)。这使得用户错误破坏部署的可能性大大降低。

另一方面,如果您不需要执行任何设置任务,则只需给它们提供一个zipfile。这比运行安装程序要简单。


11

怀亚特(Wyatt)摘下程序员帽子,戴上IT主管帽子

如果这是内部业务应用程序,那么您只需要针对一种环境-业务。我会打电话给IT主管,问他如何管理部署。IT部门已经对此进行了一段时间的处理,因此他们可能强烈希望使用xcopy或基于MSI的选项,或者完全是诸如您当前的选项之类的其他选项。

我还要补充一点,部门至少会对此表示赞赏,并有可能成为有价值的盟友,因为他们有可能比您意识到的更多地了解现有的业务应用程序和问题。


5
+1罗斯借用了怀亚特(Wyatt)的帽子,并补充说IT团队喜欢安装人员,因为他们留下的指纹是“ 此事已安装 ”。
罗斯·帕特森

3
我的IT帽子说用HTML5构建它,然后退出在台式机上的安装!
船长

8

Windows Installer应用程序被广泛用于在使用Windows的环境中安装内部业务应用程序。您还应该问自己,在应用程序的整个生命周期中,是否有可能需要对它进行更新,修补,修复或将其从用户系统中彻底删除。在许多情况下,答案是“是”-在这种情况下,具有正确编写的安装程序可以减少随着时间的推移维护应用程序的总成本。还有其他设计用于Windows Installer的服务和功能,例如重新启动管理器和WMI以及产品和补丁程序清单功能。如果您的应用程序可以从中受益,那么这就是包括安装程序的另一个原因。

从长远来看,为您的应用程序开发有用的安装程序的前期成本可能会有所回报,并且可以通过选择适当的Windows Installer创作工具(例如WiX或InstallShield或其他工具)来减轻开发成本。


7

与所有工程决策一样,这取决于。

可能最重要的因素是了解您的安装过程的使用者是谁以及开发团队具有哪些技能。

由于它是内部的,因此我假设它是由内部IT部门部署的。他们可能对命令炮弹并不陌生。

图形安装向导对于直接分发给外部客户的软件很有用,因为关于配置的简单假设不再有效,例如文件服务器位置,安全策略等。因此,您需要指导每个用户自己进行设置。

在您的环境中,这些东西可能是由开发或IT决定的,很少更改。因此,我建议使用Shell脚本将文件复制到适当的位置。这些脚本应作为发布的软件包的一部分包含在您的产品中。它还应与您的应用一起进行版本控制。

在我工作的地方,我们的整个Web应用程序是通过InstallShield向导安装的,该向导会询问很多问题,其中大多数是文件系统位置,数据库连接信息以及仅在配置文件中出现的其他设置。很难自动化。由于Web应用程序安装的核心只是创建了几个数据库并复制了文件,因此我正在使用Ant或Powershell编写一个新的安装程序,该安装程序仅运行.sql文件并复制文件。

这样,每个人都可以了解其工作原理并更有效地维护它。


我认为部署脚本将是我所需的可行解决方案。我担心这可能是在重塑安装程序的功能,因此我一直在寻找是否可能更容易采用安装程序。从您的答案看来,安装程序可能会过大且难以维护。
user1529856 2013年

究竟。这是在重新发明安装程序的功能,但可能是安装程序过大了。
布兰登
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.