我不是最好的程序员,所以我发现将程序编写为几个单独的可执行文件要容易得多,它们偶尔会相互调用。但是现在我需要一种简单的方法来实际运行它们,而无需编写像运行文件一这样的详细指令,等到它完成并且在运行文件二之前不再在进程管理器中,文件三可以在文件二创建后 15 秒执行。然后将密钥添加到您的注册表。等等。我认为那里一定有一个好的软件,我可以将所有的 exe 放入其中,告诉它何时运行它们,并输出一个文件供我的客户运行。有任何想法吗?
11 回答
Inno Setup易于使用、免费、开源且可根据需要编写脚本。
我一直对NSIS有很好的体验
- 它是开源的
- 它有一个大社区(因此有很多插件)
- 对于简单的事情,其基于脚本的方法既好又简单
- 它轻巧快速
不利的一面是,如果你想做一些更复杂的事情,你需要使用一些看起来有点像汇编语言的东西——非常奇怪,而且不是特别令人愉快。感谢您对此的评论 - 我已经忘记了这一切!
Inno Setup简单、轻量并且覆盖了很多领域。在过去的 5 年里,我已经将它用于 5-6 个应用程序,它从未让我失望。强烈推荐!
在此之前,我使用了 InstallShield,它是这些系统之一,它非常复杂,以至于它们“提供”您“利用”他们的“专业服务”来创建您的安装。换句话说,这是一种黑客行为,它只能在 Windows 的童年时期建立客户群,因为没有竞争。它有点像 747,运行起来像 Trabant。
到目前为止,我使用过的最糟糕的安装程序产品是“WISE for Windows Installer”。这让我沮丧地把鼠标砸在办公室地板上。这是(或至少是,4 年前)完全是废话,应该不惜一切代价避免。这正是那些讨厌的许可协议所适用的那种软件,否则出版商将被起诉而被遗忘......
是的,有两个想法:
如果您正在寻找一种在客户系统上静态放置文件、注册表项、开始菜单快捷方式等的方法,您应该寻找安装程序解决方案。其中许多存在,选择最好的主要归结为功能和定价。我碰巧喜欢 Caphyon 的Advanced Installer,它确实有一个看起来可以满足您需求的免费软件版本,除了在预定时间运行可执行文件的能力(这需要仅在企业版中找到的 Windows 任务计划程序支持,这是在超昂贵的价格范围内,可与 InstallShield 相媲美...)
如果控制客户系统上的事件流比获取系统上的可执行文件更重要,您可能需要研究Automise,它基本上是一个用于创建脚本的超友好 UI,它使调度任务等事情变得非常容易。
无论如何,您可以下载这两种软件的试用版,看看哪一种(或可能两者兼有)能让您以最简单的方式做您想做的事,或者至少给您一些关于如何最好地为您的客户服务的想法。事实证明,只需添加一个新的“主管”可执行文件来处理注册表项、调度等,就可以在没有任何第三方附加组件的情况下解决问题……
如果您除了能够安装一些可执行文件之外没有任何特定要求,那么基本上任何人都会这样做。我推荐NSIS,不是因为它特别容易使用(它有一种繁琐的类汇编语言,在其中做更复杂的事情并不实用),而是因为它是免费的,有一个庞大而活跃的社区,并且它以非常低的开销生成快速安装程序。作为额外的奖励,您可以在 Linux 上运行编译器(即生成安装程序的工具)。
编辑: ...无论您做什么,都不要使用 InstallShield。
The ones I've worked with are:
- InstallShield
- NSIS
- INNO Setup
- Custom created installer
My preference is INNO Setup. It's free, it's easy.
你应该看看InstallJammer。它不仅是免费的,而且是跨平台的并且非常易于使用。最常见的操作根本不需要任何脚本,但在底层使用强大的脚本语言,您可以让安装做任何您想做的事情。
如果您只需要一个基本的安装程序来安装您的应用程序,那么您可以在第一次启动后的几分钟内构建它。如果你想要更强大的东西,功能和文档都很棒。
绝对是维克斯。:)
Wix 允许您轻松完成大多数事情,而无需 hack 即可完成最困难的事情,它是免费和开源的。
您可以在 Visual Studio 中使用 Wix(使用 Votive),也可以使用 .Net SDK、MSBuild 和您最喜欢的 XML 编辑器来使用它。Wix 支持创建 MSI 安装程序、MSP 补丁、MSM 合并模块、Wix 库等等。
I heart wix是 MSFT 的开源、基于声明性 (XML) 的工具包,用于构建 MSI。
是王牌
如果您想安装二进制文件,添加 reg 键,甚至运行“自定义操作”(在安装期间执行您自己的代码),您应该看看它。然后,您将获得一键式 (msi) 解决方案。好吗?
如果您不追求安装程序(这听起来不像您)为什么不写一个程序来做您需要的事情?