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

重视简单。 我从来没有做过安装程序,我宁愿不必学习太多。 一个系统,我可以把一堆文件,并会做出一些聪明的猜测在哪里把它们将是理想的。

继续回答一般问题。

但在我的情况下,我坚持一些额外的限制。 要安装的程序是用VB6(或者是5?)和VB以前的几个版本编写的,所以不会很快更新。 我有一个正在运行的安装,将有一个干净的虚拟机玩所以我会做一个循环:运行安装,find它的中断,修复它,添加到安装程序,恢复虚拟机,再试一次。 如果有人有更好的方法,我愿意提出build议。

必须得到它在XP上工作,我真的也想有一些可以在新版本的Windows上工作的东西。

InnoSetup或NSIS ,哪一个对您来说更容易。 ISTool是InnoSetup的一个很好的GUI工具,使得创建安装脚本变得更加简单。

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

依赖Walker对于找出安装程序缺少哪个dll非常有用。 一旦你知道了DLL,你可以找到合并模块使用合并模块查找 。

我曾经和NSIS一起工作过一些小复杂的系统。 它的免费,提供吨插件的能力,并设法做我需要做的一切。

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

有很多事情需要解决,而这些“设置”问题中的一部分也意味着改变计划。 例如,Vista UAC出现时,对于人们来说,“受保护的文件夹”概念似乎是新鲜的。 我想他们都是作为管理员或东西运行? 它最简单的形式意味着你不再把可写文件放在程序(又名“程序文件”)中的EXE旁边。

另一个因素是注册表的使用方式已经改变。 我不是在谈论注册表虚拟化,虽然这也是它的一部分。 但是COM注册可以按照每台机器和每个用户完成,甚至关闭UAC也可以解决这个问题。 在Windows Vista SP1上,请参阅每个用户的COM注册并使用UAC升级进程 。 结果是安装程序包不应该运行regsvr32(或者调用COM库的self-reg入口点)。 请参阅SelfReg表中的 “备注”。


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

这不是最简单的选项,但VSI 1.1中有一个VB安装向导,以帮助您获得正确的基础知识。 做高级的事情,如创建一个[CommonAppData]子文件夹,并设置每个人的权利,必须在IDE之外的后期制作步骤中完成。 这就是第三方工具可以提供更多控制的地方,而不需要使用Orca或后期编译安装脚本。

那些让脚本化的“传统”安装人员尝试跟上,但脚本变得越来越复杂。 结果有时候是可以的。 Windows 7引入了自己的一些新的皱纹。

虽然ClickOnce并不是真正的VB6的最佳选择,但是没有人说你不能使用免注册的COM来安装许多程序的XCopy。 对于这个问题,免注册的COM甚至可以成为安装程序包中的一个很好的选择。


所以最后,部署VB6程序的“最简单”方法可能是免注册的COM XCopy软件包包装在一个自解压的EXE中,该EXE将触发一个脚本来创建一个“开始”菜单的快捷方式。 如果你的生活没有这个快捷方式,那就更简单了:只需将它解压到需要的地方即可!

请参阅制作我的清单或免注册COM包装的替代工具。

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

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

大多数时候使用Windows安装程序就像使用大锤来破解一个螺母。

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

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

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

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

作者知道这一点,并拒绝做任何事情。 该文件夹的名称是随机的,所以不能添加到您的防病毒程序可能使用的任何豁免列表。

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