如何在 XP/Vista 及更高版本上为 VB6 创建简单的安装系统?[关闭]

StackOverflow https://stackoverflow.com/questions/23836

  •  09-06-2019
  •  | 
  •  

非常强调简单​​。我从来没有做过安装程序,我不想学太多。我可以将一堆文件交给一个系统,并且它可以对将它们放在哪里进行一些明智的猜测,这将是理想的系统。

继续回答一般性问题。

然而,就我而言,我遇到了一些额外的限制。要安装的程序是用VB6(或者是5?)和一些以前版本的VB编写的,所以它是 不是 很快就会更新。我有一个正在运行的安装,并且有一个干净的虚拟机可以使用所以我将做一个循环:运行安装,找到损坏的地方,修复它,将其添加到安装程序中,恢复虚拟机,然后重试。如果有人有更好的方法,我愿意接受建议。

必须 让它在 XP 上运行,我真的很希望有一些也能在较新版本的 Windows 上运行的东西。

有帮助吗?

解决方案

创新设置 或者 国家信息安全局, ,以您认为更容易的为准。 工具 是 InnoSetup 的一个很好的 GUI 工具,它使创建安装脚本变得更加容易。

其他提示

几年前,在 Vista 之前,我就使用过 InnoSetup,当时我对它非常满意。我只需要安装几个文件和一个“开始”菜单图标。它效果很好,而且很容易学习。

依赖步行者 对于找出安装程序中缺少哪个 dll 非常有用。一旦你知道了 dll,你就可以使用以下命令找到它所在的合并模块: 合并模块查找器.

我曾与 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。强调“习惯”。

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top