将 Inno Setup 安装程序包装在 MSI 中以便通过 AD 更轻松地分发是否可行/明智?

发布于 2024-07-06 00:38:50 字数 662 浏览 8 评论 0原文

我们的安装程序是用 Inno Setup 编写的,我们实际上对它非常满意。 然而,一些客户不断要求提供 MSI 安装程序,他们可以通过 Active Directory 更轻松地分发该安装程序。 我们已经通过使用我们自己的选项扩展 Inno Setup 的 /LOADINF 机制,竭尽全力使安装程序能够很好地处理自动化和无人值守的安装。

为了满足要求 MSI 的客户,我一直在考虑将常规安装程序简单地封装在 MSI 中,可能是使用 WIX 创建的。 问题是:我可以保持当前安装程序提供的高可配置性吗? 在无人值守/批量安装场景中,我将如何通过外部 MSI 公开 Inno Setup 安装程序的选项?

请注意,我自己还没有真正深入研究 MSI 创建和 WIX。 现在我只感兴趣那些知道自己在说什么的人是否认为这将是一种可行/明智的方法来投入我们的精力......

[编辑:] 最初,我认为我可以使用临时提取和执行方法,即 MSI 将简单地充当将 Inno 安装程序传递到目标 PC 并以 /VERYSILENT 模式执行它的容器。 但我猜想要求 MSI 的客户也希望能够从中心位置卸载甚至修改安装,我想在这种情况下这是不可能的,不是吗?

PS:我们这里也有 MSI 的 WISE 旧版本,但这种经历实际上是我们开始使用 Inno 的原因......

Our installer is written with Inno Setup and we are actually quite happy with it. Yet some customers keep asking for an MSI installer which they could more easily distribute via Active Directory. We have already gone to some lengths to make the installer deal really well with automated and unattended installations by extending Inno Setup's /LOADINF-mechanism with our own options.

In order to satisfy the customers asking for MSI, I had been thinking about simply wrapping our regular installer inside an MSI, possibly created using WIX. The question is: can I maintain the high configurability which our current installer offers that way? How would I go about exposing the Inno Setup installer's options through the outer MSI in the unattended/mass installation scenario?

Note that I haven't really gotten to the point of actually digging into MSI-creation and WIX myself yet. Right now I'm only interested in whether people who do know what they're talking about think this would be a feasible/sensible approach to invest our energy in in the first place...

[EDIT:]
Initially I thought I could do with the temp extraction and execution approach, i.e. the MSI would simply serve as a vessel for delivering the Inno installer to the target PC and executing it there in /VERYSILENT-mode. But I guess the customers who ask for the MSI also want to be able to uninstall or even modify the install from a central location and I guess that won't be possible in that scenario, would it?

P.S.: We do have an old copy of WISE for MSI here as well but that experience was actually the reason why we started using Inno instead to begin with...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(10

枫林﹌晚霞¤ 2024-07-13 00:38:50

尽管最后的评论是可行且可行的,但转向 MSI 是处理此问题的最佳方法。

几乎所有大型组织都只规定 MSI,原因有很多。

1)首先是易于部署
2)对某些人来说更重要的是应用程序的社交性
3) 自我修复

inno setup 和其他未实现 Windows Installer 的此类工具根本无法以与 Windows Installer 相同的方式提供应用程序社交性。

您必须了解 Inno setup 是设计用于部署单个应用程序的软件。

Windows Installer 是一个完整的框架,用于处理社交、用户模拟、用户提升、自我修复、用户配置文件修复。

它们两个在功能上甚至相差甚远,在我看来,与 Windows 安装程序相比,inno setup 完全偏离了路线。

它能创建成功的安装程序吗? 是的
这个容易用吗 ? 是的
它是否可以创建良好的单个安装程序? 是的
是企业的最佳选择吗? no

微软“短信安装程序”最早开发的工具是10年前的innosetup。 安装领域发生了巨大的变化,而 inno setup 根本跟不上这种变化的步伐。

although the last comment is feasible and workable, moving to MSI is the best way to handle this.

almost all large organisations stipulate MSI only, there are multitudes of reasons why.

1) first is ease of deployment
2) more important to some is application sociability
3) self healing

inno setup and other such tools not implementing Windows Installer simply cannot offer application sociability in the same ways as windows installer.

you have to understand Inno setup is software designed to deploy a single application.

Windows Installer is an entire framework to deal with sociability, user impersonation, user elevation, self healing, user profile fix up.

They two are not even remotely close in functionality, inno setup in my mind is completely and utterly way off course in terms of comparing with windows installer.

Can it create successful installers ? yes
Is it easy to use ? yes
Does it create good single installers ? yes
Is it the best choice for enterprise ? no

The earliest tools developed by microsoft "SMS Installer" was innosetup 10 years ago. Things have changed drastically in the install world and inno setup simply hasnt kept up with the pace of that change.

岁月静好 2024-07-13 00:38:50

这样做几乎相当于交付一个 ZIP 文件并在安装结束时调用 unzip。

使用这种方法,AD 和 Windows Installer 会被愚弄,就像处理正确的 MSI 安装一样,但事实并非如此,它们一开始就会对您产生适得其反的效果。

别走这条路。

无论如何,WiX 是优于 InnoSetup 的工具集,因此您花在学习和移植上的时间将通过更好的协作支持得到回报。

Doing so would be pretty much equivalent to delivering a ZIP file and calling unzip by the end of installation.

With such approach AD and Windows Installer would be fooled as if dealing with proper MSI installation, but as it is not the case, they'd backfire on you on the very first occasion.

Don't go this way.

And WiX is superior toolset to InnoSetup, anyway, so the time you'll spend on learning and porting will pay off by better support of collaboration.

无声无音无过去 2024-07-13 00:38:50

我需要在silent.inf(不是稳定的inno设置设置值)上输入一个客户值,看起来LOADINF允许这样做。

注意:如果您使用 makemsi,则不必包含 bat,因为您可以使用 $WrapInstall。

I need to input a custome value on the silent.inf (not a stablished inno setup setting value) dosent look like LOADINF allows for that.

Note:If you use makemsi you do not have to include a bat as you can use $WrapInstall.

以往的大感动 2024-07-13 00:38:50

将 Inno Setup 封装在 MSI 包中并不是一项简单的任务。 然而,这是可能的。 有很多免费工具可用于执行此操作。 您应该选择一种还支持卸载和升级的产品。

我发现只有一款免费工具支持升级和卸载。 查看 http://www.exemsi.com/inno-setup-and-msi

Wrapping an Inno Setup in an MSI package is not a trivial task. However, it is possible. There are lots of free tools out there that can be used to do this. You should choose one that also supports uninstall(s) and upgrades.

I have found only one free tool that supports upgrades and uninstall. Check out http://www.exemsi.com/inno-setup-and-msi

┼── 2024-07-13 00:38:50

混合安装技术是没有意义的。

如果你混合使用,你会遇到卸载内容的第一个问题。
如果不进行任何更改,您将获得程序的 2 个卸载程序。

中有一些以 windows installer 开头的文章

  • 在“entwickler magazine” Entwickler Magazin (Ausgabe: 03.09/15.04.2009) : MSI-Pakete mit Open-Souce-Software erzeugen Teil
    4
  • Entwickler Magazin(澳大利亚:02.09/12.02.2009)文章:MSI-Pakete mit Open-Souce-Software erzeugen Teil
    3
  • Entwickler Magazin(澳大利亚:01.09/10.12.2008)文章:MSI-Pakete mit Open-Souce-Software erzeugen Teil
    2
  • Entwickler Magazin (Ausgabe: 06.08/15.10.2008) 文章:MSI-Pakete mit Open-Souce-Software erzeugen

http:/ /entwickler-magazin.de/

Windows 安装程序应该是您安装的唯一技术。
它的未来证明和它的稳定!

It makes no sense mixing install technologies.

If you are mixing you getting the first problem with the uninstall stuff.
without changes you get 2 uninstallers of your program.

there are some articles starting with windows installer in the "entwickler magazine"

  • Entwickler Magazin (Ausgabe: 03.09/15.04.2009) Artikel: MSI-Pakete mit Open-Souce-Software erzeugen Teil
    4
  • Entwickler Magazin (Ausgabe: 02.09/12.02.2009) Artikel: MSI-Pakete mit Open-Souce-Software erzeugen Teil
    3
  • Entwickler Magazin (Ausgabe: 01.09/10.12.2008) Artikel: MSI-Pakete mit Open-Souce-Software erzeugen Teil
    2
  • Entwickler Magazin (Ausgabe: 06.08/15.10.2008) Artikel: MSI-Pakete mit Open-Souce-Software erzeugen

http://entwickler-magazin.de/

windows installer should be the only technology for your installations.
its future proof and its stable!

清醇 2024-07-13 00:38:50

我认为,使用 MSI 封装的 Inno Setup 可以完成您想做的所有事情,但这远非微不足道,并且使用 WiX 可能会使这项特定任务变得更加困难。 简而言之,我真的不会推荐它。

但如果您确实想...

MSI 文件只是带有附加脚本指令的数据库文件,并且通常嵌入包含您实际想要安装的内容的 .cab 文件。

如果您使用 Wise,您将生成默认脚本,然后您可以向其中添加 Windows Installer 条件并更精细地控制事件(安装、修复、修改、卸载),以便它们在您的 Inno Setup 安装脚本上调用等效操作,这将需要安装并保存在临时文件夹中。

I would argue that it is possible to do all that you would like with an MSI wrapped Inno Setup, but it is far from trivial, and using WiX might make this particular task more difficult. In short I would not really recommend it.

But if you really would like to...

MSI files are simply database files with additional script instructions and often embed the .cab file that contains the stuff you actually want to install.

If you use Wise, you will generate default scripts that you can then add Windows Installer conditions to and control the events to a finer degree (Install, repair, modify, uninstall) so that they call equivalent actions on your Inno Setup install script which would need to be installed into and kept in a temporary folder.

趁微风不噪 2024-07-13 00:38:50

制作一个自动安装 MSI 的 INNOSETUPper 的包装套件非常容易。 对于基本功能(安装/卸载)来说这已经足够了。 大多数安装程序无论如何都不会实施修复。

  1. 为INNO安装程序创建silent.inf脚本(可选)

  2. 创建调用的install.bat

    myinnosetup.exe /silent /NOCANCEL /norestart /Components="xxx"

    你可以使用/verysilent
    您可以使用 /LOADINF="silent.inf"

    从silent.inf 加载设置,

  3. 创建调用install.bat的MSI安装文件(如果需要,可以使用参数)

  4. 将所有 4 个文件交付给您的客户,他们可以使用 SMS 或 ActiveDirectory 部署您的 Inno 安装程序,每个人都很高兴:)

Its pretty easy to make a wrapper kit that automatically installs INNOSETUPper from MSI. For basic functionality (install/uninstall) this is enough. Most setuppers do not implement repair anyway.

  1. create silent.inf script for INNO Setup (optional)

  2. create install.bat that calls

    myinnosetup.exe /silent /NOCANCEL /norestart /Components="xxx"

    you can use /verysilent
    you can load settings from silent.inf with /LOADINF="silent.inf"

  3. create MSI setup file that calls install.bat ( with parameters if necessary)

  4. deliver all 4 files to your customer and they can deploy your Inno setupper with SMS or ActiveDirectory and everyone is happy :)

你列表最软的妹 2024-07-13 00:38:50

回应您的编辑:是的,您所描述的将阻止进行升级(删除/重新安装除外)和远程配置,因为 MSI 数据库不会知道有关安装程序内容的任何信息。

不过,许多安装程序包都以这种方式启动 MSI“支持”:例如,InstallShield 就是这样做的。 这是我抛弃它们的主要原因,因为以这种方式制作的安装程序对于 MSI 目的来说毫无用处。 我不知道最近版本的InstallShield是否更好,我上次检查是5年前。

In response to your edit: yes, what you describe will prevent doing upgrades (other than delete/reinstall) and remote configuration, since the MSI database won't know anything about the contents of your installer.

Many installer packages started MSI 'support' in this way, though: InstallShield did, for example. That's the main reason I dumped them, because installers made in that way are useless for MSI purposes. I don't know if recent versions of InstallShield are better, last time I checked was 5 years ago.

从﹋此江山别 2024-07-13 00:38:50

我自己也多次遇到过这个问题。 因此,我创建了一种解决此问题的标准方法,并生成了一个向导来指导您完成这些步骤。 该工具将支持以下功能:

  1. 将 exe 包装在 MSI 中。
  2. 支持卸载。
  3. “添加或删除程序”中仅显示一个程序。
  4. 当您使用 MSIEXEC.EXE 运行 MSI 包时,允许您将命令行参数(例如 /SILENT)传递给嵌入式安装程序。

您可以在 http://www.exemsi.com 获取它(基本版本是免费的)

使用我的联系表并告诉我什么您认为 :-)

I have had this problem many times myself. Therefore, I created a standard way to approach this problem and it resulted in a wizard that will guide you through the steps. The tool will support the following:

  1. Wrap the exe in an MSI.
  2. Support Uninstall.
  3. Only show one program in "Add or Remove programs".
  4. Allow you to pass command line arguments such as /SILENT to the embedded setup when you run the MSI package with MSIEXEC.EXE.

You can get it at http://www.exemsi.com (the basic version is free)

Use my contact form and let me know what you think :-)

删除→记忆 2024-07-13 00:38:50

不,没有办法在保留客户“隐式”要求的功能的同时做到这一点。 您可以在 MSI 中执行的唯一“包装”操作是在安装时将其解压,然后从解压到的临时位置启动 InnoSetup 安装程序。 MSI 是一种根本不同的工作方式:InnoSetup(以及 NSIS 和大多数其他安装程序)采用以代码为中心的方法:您“编程”“步骤”来安装数据。 MSI 是一个数据库,采用“以数据为中心”的方法:您指示应安装哪些文件,MSI“运行时”将完成其余的工作。 这使您可以进行版本控制并精确控制内容的去向。

简而言之,为了给您的客户提供他们想要的东西(即 MSI 通过 AD 带来的部署简便性),您需要“适当的”MSI。 祝你好运,恕我直言,这是一个很大的痛苦。 但一旦你掌握了 MSI 和 MSI,它确实会带来好的结果。 维克斯。

No, there's no way to do that while still keeping the functionality your customers are 'implicitly' asking for. The only 'wrapping' in MSI you can do is to extract it on installation and start your InnoSetup installer from the temporary location where you extracted to. MSI is a fundamentally different way of working: InnoSetup (& NSIS & most other installers) take a code-centric approach: you 'program' the 'steps' to install your data. MSI is a database and takes a 'data-centric' approach: you indicate what files should be installed and the MSI 'runtime' does the rest. This gives you versioning and exact control of what goes where.

In short, to give your customers what they want (i.e., the ease of deployment that MSI brings with AD), you'll need 'proper' MSI's. Good luck with that, it's a major pain IMHO. But it does give good results once you master MSI & WiX.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文