如何在XP / Vista和更新版本上为VB6创建一个简单的安装系统?

时间:2008-08-23 01:50:44

标签: windows vb6 installer

重视简单。我从未做过安装程序而且我不需要学习太多东西。一个我可以把一堆文件交给它的系统,它可以做出一些关于把它们放在哪里的明智猜测。

继续回答一般问题。

然而在我的情况下,我遇到了一些额外的限制。要安装的程序是用VB6(或它是5?)和几个以前的VB版本编写的,所以将很快更新。我有一个正在运行的安装,并且将使用一个干净的虚拟机。所以我将做一个循环:运行安装,找到它被破坏的地方,修复它,将其添加到安装程序,还原虚拟机,再试一次。如果有人有更好的方法,我愿意接受建议。

必须让它在XP上工作,我真的希望也能在新版本的Windows上运行。

7 个答案:

答案 0 :(得分:11)

InnoSetupNSIS,无论哪个更容易。 ISTool是InnoSetup的一个很好的GUI工具,它使创建设置脚本变得更加容易。

答案 1 :(得分:5)

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

答案 2 :(得分:4)

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

答案 3 :(得分:1)

我曾与NSIS合作,并将其一些小的复杂性作为一个梦幻般的系统。它是免费的,提供大量的插件功能,并设法做我需要做的一切。

答案 4 :(得分:1)

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

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

另一个因素是注册表的使用方式发生了变化。我不是在谈论注册表虚拟化,尽管这也是它的一部分。但COM注册可以按机器和按用户进行,甚至关闭UAC也可以解决这个问题。见Per-User COM Registrations and Elevated Processes with UAC on Windows Vista SP1。结果是安装程序包不应该运行regsvr32(或以其他方式调用COM库的self-reg入口点)。请参阅SelfReg Table上的“备注”。


在大多数情况下,Windows Installer是 的前进方式。 VB6程序员可以免费下载Visual Studio Installer 6.0 1.1版来创建MSI包。有关一些有价值的信息,请参阅VFP文章Using Microsoft Visual Studio Installer for Distributing Visual FoxPro 6.0 Applications中的“COM服务器”。

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

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

虽然ClickOnce不是VB6的最佳选择,但没有任何内容表明你不能使用免注册COM来安装许多程序的XCopy。无Reg的COM甚至可以成为安装程序包中使用的一个很好的选择。


因此,最终部署VB6程序的“最简单”方式可能是包含在自解压EXE中的无法注册的COM XCopy程序包,它将触发脚本以创建“开始菜单”快捷方式。如果你可以在没有捷径的情况下生活,那就更容易了:只需将包解压缩到需要的位置即可!

请参阅Make My Manifest或其他免注册COM包装工具。

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

答案 5 :(得分:0)

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

大多数时候使用Windows Installer就像使用大锤来破解螺母一样。

我使用InnoSetup作为我自己的东西和InstallShield工作(违背我的意愿)。从一个简单的基于脚本的安装程序开始,如果你有充分的理由,只使用Windows Installer。

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

答案 6 :(得分:0)

使用到LOVE Inno Setup。强调“习惯”。

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

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

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