7

重强调简单。我从来没有做过安装程序,我不想学太多。一个我可以将一堆文件交给它的系统,它可以对放置它们的位置做出一些明智的猜测,这将是理想的。

继续回答一般问题。

但是,在我的情况下,我遇到了一些额外的限制。要安装的程序是用VB6(或者是5?)和VB的几个以前版本编写的,所以它不会很快更新。我有一个正在运行的安装,并且将有一个干净的 VM 可以使用所以我将执行以下循环:运行安装,查找损坏的位置,修复它,将其添加到安装程序,恢复 VM,再试一次。如果有人有更好的方法,我愿意接受建议。

必须让它在 XP 上运行,而且我真的很想有一些东西也可以在较新版本的 Windows 上运行。

4

7 回答 7

11

InnoSetupNSIS,以您认为更容易的为准。ISTool是 InnoSetup 的一个很好的 GUI 工具,它使创建设置脚本更加容易。

于 2008-08-23T02:16:37.897 回答
5

几年前,在 Vista 之前,我使用过 InnoSetup,那时我对它非常满意。我只有几个要安装的文件和一个开始菜单图标。它工作得很好,而且很容易学习。

于 2008-08-23T03:26:27.713 回答
4

Dependency Walker对于找出安装程序中缺少哪个 dll 非常有用。知道 dll 后,您可以使用Merge Module Finder找到它所在的合并模块。

于 2008-08-23T01:57:23.717 回答
1

我曾与 NSIS 合作,并克服了它的一些次要复杂性,这是一个很棒的系统。它是免费的,提供了大量的插件功能,并设法完成了我需要做的一切。

于 2008-08-23T02:19:07.407 回答
1

为程序创建完整的安装包本身几乎就是一个主题领域。有许多因素需要考虑,我们大多数人不再运行 Windows 95。世界不像以前那么简单了。

有很多事情需要解决,其中一些“设置”问题也意味着更改程序。例如,当 Vista UAC 出现时,“受保护的文件夹”概念对人们来说似乎是新的。我猜他们都是以管理员身份运行的还是什么?以最简单的形式,这意味着您不再将可写文件放在程序(又名“程序文件”)中的 EXE 旁边。

另一个因素是注册表的使用方式发生了变化。我不是在谈论注册表虚拟化,尽管这也是其中的一部分。但是 COM 注册可以在每台机器和每个用户上完成,甚至关闭 UAC 也会把它搞砸。请参阅Windows Vista SP1 上使用 UAC 的每用户 COM 注册和提升的进程。结果是安装程序包不应运行 regsvr32(或以其他方式调用 COM 库的 self-reg 入口点)。请参阅SelfReg 表中的“备注” 。


在大多数情况下, Windows Installer 是前进的道路。VB6 程序员可以免费下载 Visual Studio Installer 6.0 1.1 版来创建 MSI 包。有关一些有价值的信息,请参阅 VFP 文章使用 Microsoft Visual Studio 安装程序分发 Visual FoxPro 6.0 应用程序中的“COM 服务器” 。

这不是最简单的选择,但 VSI 1.1 中有一个 VB 设置向导,可以帮助您正确掌握基础知识。执行高级操作(例如创建 [CommonAppData] 子文件夹并在其上设置所有人权限)必须在 IDE 之外的构建后步骤中完成。这就是第 3 方工具可用于为您提供更多控制权的地方,而无需求助于 Orca 或构建后的安装程序脚本。

那些制作脚本“遗留”安装程序的人试图跟上,但脚本变得越来越复杂。结果有时是不确定的。Windows 7 引入了一些自己的新功能。

虽然 ClickOnce 并不是 VB6 的最佳选择,但没有人说您不能使用无注册 COM 来安装许多程序的 XCopy。就此而言,无注册 COM 甚至可以成为在安装程序包中使用的不错选择。


因此,最终部署 VB6 程序的“最简单”方法可能是使用自解压 EXE 中的无注册 COM XCopy 包,该 EXE 将触发脚本以创建“开始”菜单快捷方式。如果您可以不使用快捷方式,那就更容易了:只需将包解压缩到需要去的地方!

请参阅Make My Manifest或用于无注册 COM 打包的替代工具。

这要求目标系统运行 XP(最好是 SP2)或更高版本。这里唯一可能的故障是 XP 直到 XP SP3 才包含 VB6 SP6 运行时,因此您需要首先针对 VB6 SP5 运行时测试您的程序。还有一个小问题:您不能以这种方式使用 ActiveX EXE,它们仍然需要注册。

于 2009-08-25T13:32:10.410 回答
0

我的建议是这样的。尽量使安装程序尽可能简单。Windows Installer 是一个非常复杂的软件,当事情不正常时,很难弄清楚发生了什么。我相信我们都经历过 Windows Installer 试图修复您不再拥有源 .msi 文件的文件的无限循环。

大多数情况下,使用 Windows Installer 就像使用大锤敲击螺母一样。

我将 InnoSetup 用于我自己的东西,并在工作中使用 InstallShield(违背我的意愿)。从一个简单的基于脚本的安装程序开始,只有在有充分理由的情况下才使用 Windows Installer。

请注意,某些非 Windows Installer 安装工具(例如 InnoSetup)可能缺少对将程序集安装到 GAC 的支持。

于 2008-08-30T02:44:20.223 回答
0

曾经喜欢 Inno Setup。强调“习惯”。

当您运行单个文件安装程序(您通常会这样做)时,它会将真正的安装程序解压缩到 temp 文件夹下的文件夹中,然后尝试执行它。问题是......一些防病毒程序不允许这样做。

作者意识到了这一点,并拒绝对此采取任何行动。文件夹名称是随机的,因此不能添加到您的防病毒程序可能使用的任何豁免列表中。

再次。作者意识到了这一点,并建议我告诉我的用户在安装过程中关闭他们的防病毒程序。(就像会发生的那样)

于 2008-12-11T11:51:42.277 回答