如何在 XP/Vista 及更高版本上为 VB6 创建简单的安装系统?[关闭]
题
非常强调简单。我从来没有做过安装程序,我不想学太多。我可以将一堆文件交给一个系统,并且它可以对将它们放在哪里进行一些明智的猜测,这将是理想的系统。
继续回答一般性问题。
然而,就我而言,我遇到了一些额外的限制。要安装的程序是用VB6(或者是5?)和一些以前版本的VB编写的,所以它是 不是 很快就会更新。我有一个正在运行的安装,并且有一个干净的虚拟机可以使用所以我将做一个循环:运行安装,找到损坏的地方,修复它,将其添加到安装程序中,恢复虚拟机,然后重试。如果有人有更好的方法,我愿意接受建议。
我 必须 让它在 XP 上运行,我真的很希望有一些也能在较新版本的 Windows 上运行的东西。
其他提示
几年前,在 Vista 之前,我就使用过 InnoSetup,当时我对它非常满意。我只需要安装几个文件和一个“开始”菜单图标。它效果很好,而且很容易学习。
我曾与 NSIS 合作过,并克服了它的一些小复杂性,它是一个非常棒的系统。它是免费的,提供了大量的插件功能,并设法完成我需要做的一切。
为程序创建完整的安装包几乎本身就是一个主题领域。有很多因素需要考虑,而且我们大多数人都不再运行 Windows 95。世界不再像以前那么简单。
有很多事情需要解决,其中一些“设置”问题也意味着更改程序。例如,当Vista UAC出现时,“受保护的文件夹”概念对人们来说似乎很陌生。我猜他们都是以管理员身份运行的?最简单的形式意味着您不再将可写文件放在程序中的 EXE 旁边(也称为“程序文件”)。
另一个因素是注册表的使用方式发生了变化。我不是在谈论注册表虚拟化,尽管这也是其中的一部分。但是 COM 注册可以按机器和按用户进行,甚至关闭 UAC 也会把事情搞砸。看 Windows Vista SP1 上的每用户 COM 注册和 UAC 提升进程. 。结果是安装程序包不应运行 regsvr32(或以其他方式调用 COM 库的自注册入口点)。请参阅“备注” 自注册表.
Windows 安装程序是 这 在大多数情况下前进的方式。VB6 程序员可以免费下载 Visual Studio Installer 6.0 版本 1.1,用于创建 MSI 包。请参阅 VFP 文章中的“COM 服务器” 使用 Microsoft Visual Studio 安装程序分发 Visual FoxPro 6.0 应用程序 以获得一些有价值的信息。
这不是最简单的选择,但 VSI 1.1 中有一个 VB 设置向导可以帮助您掌握正确的基础知识。执行高级操作(例如创建 [CommonAppData] 子文件夹并为其设置“每个人”权限)必须在 IDE 外部的构建后步骤中完成。这就是第 3 方工具可以为您提供更多控制的有用之处,而无需诉诸 Orca 或构建后安装程序脚本。
那些制作脚本化“遗留”安装程序的人试图跟上,但脚本变得越来越复杂。结果有时是不确定的。Windows 7 引入了一些自己的新问题。
虽然 ClickOnce 并不是 VB6 的最佳选择,但没有任何迹象表明您不能使用免注册 COM 来 XCopy 安装许多程序。就此而言,免注册 COM 甚至可以成为在安装程序包中使用的不错选择。
因此,最终部署 VB6 程序的“最简单”方法可能是封装在自解压 EXE 中的免注册 COM XCopy 包,该 EXE 将触发脚本来创建“开始”菜单快捷方式。如果你可以在没有捷径的情况下生活,那就更容易了:只需将包解压缩到需要的位置即可!
看 制作我的清单 或用于免注册 COM 打包的替代工具。
这要求目标系统运行 XP(最好是 SP2)或更高版本。这里唯一可能的问题是 XP 直到 XP SP3 才包含 VB6 SP6 运行时,因此您需要首先针对 VB6 SP5 运行时测试您的程序。好吧,还有一个小故障:您不能以这种方式使用 ActiveX EXE,它们仍然需要注册。
我的建议是这样的。尝试使安装程序尽可能简单。Windows Installer 是一款非常复杂的软件,当出现问题时,很难弄清楚到底发生了什么。我确信我们都经历过 Windows Installer 试图修复您不再拥有源 .msi 文件的文件的无休止循环。
大多数时候,使用 Windows Installer 就像使用大锤敲开坚果一样。
我在自己的事情上使用InnoSetup,在工作中使用InstallShield(违背我的意愿)。从基于简单脚本的安装程序开始,并且仅在有充分理由的情况下才使用 Windows Installer。
请注意,某些非 Windows Installer 安装工具(例如 InnoSetup)可能不支持将程序集安装到 GAC。
我 用过的 喜欢 Inno Setup。强调“习惯”。
当您运行单文件安装程序(您通常会执行的操作)时,它将真正的安装程序解压到临时文件夹下的一个文件夹中,然后尝试执行它。问题是...某些防病毒程序不允许这样做。
作者意识到了这一点,并拒绝对此采取任何行动。该文件夹名称是随机的,因此无法添加到防病毒程序可能使用的任何豁免列表中。
再次。作者意识到了这一点,并建议我告诉我的用户在安装过程中关闭防病毒程序。(好像会发生这样的事)