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

来吧回答一般问题。

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

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

===============>>#1 票数:11 已采纳

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

===============>>#2 票数:5

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

===============>>#3 票数:4

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

===============>>#4 票数: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 Installer分发Visual FoxPro 6.0应用程序 ”中的“COM服务器”。

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

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

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


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

请参阅Make My Manifest或替代无COM包装的替代工具。

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

===============>>#5 票数:1

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

===============>>#6 票数:0

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

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

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

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

===============>>#7 票数:0

曾经爱过Inno Setup。 强调“习惯”。

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

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

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

  ask by BCS translate from so

未解决问题?本站智能推荐:

1回复

使用.NET Windows Installer安装VB6应用程序和dll

如何通过创建.Net(4.0)Windows安装程序来安装VB 6.0应用程序及其相关的DLL文件?
1回复

如何分发VB6 bootstrapping文件?

我正在将我的VB6安装程序移植到NSIS。 查看LST文件,有一个用于引导文件的部分: 另一个用于setup1文件 在另一篇文章中,我被警告要分发wshom.ocx文件(bootstrapping文件),说: “wshom.ocx并不意味着以这种方式分发。在Windo
1回复

VB6应用程序导致安装显示

我的VB应用出现了一个奇怪的问题,这让我非常困惑。 我正在更新现有程序。 我必须添加一些处理队列功能。 在我的系统上,单元测试效果很好,但是当我编译它并在另一台计算机(网络服务器计算机)上运行它时,它首先尝试打开Office安装程序。 如果我取消此操作,该程序似乎可以正常运行。 问题是
3回复

更新旧版VB6应用的最佳方法

最近,一家小型的ma and pa商店来我这里,要求更新一个vb6程序,该程序是他们以前的兼职员工在大学期间为他们制作的程序。 在CD上,学生提供的是源代码和程序的安装程序,这非常有帮助。 我只想给他们一张带有新安装程序和更新源代码的新CD。 我的问题是,我该如何创建语言,或者是否更容易更
3回复

在没有安装VB6的情况下运行VB6应用程序

我的问题是如果我想运行我的VB6应用程序,我必须在客户端的计算机上安装VB6。 实际上我有VB6的版本,无法制作安装文件。 所以我只是手动链接到exe文件。 有什么方法我不必安装VB6,可以只复制几个文件,应用程序可以运行? 谢谢
1回复

VB6 P&D安装,“目标文件正在使用中……”

我正在维护一个用VB6编写的应用程序,目前我们使用打包和部署向导来为我们的项目创建安装。 当大多数用户尝试安装此软件时,他们会收到错误消息: 谁能告诉我是否有一种特定的方法可以通过更改安装文件/设置中的某些内容或编写某种脚本来避免这种情况的发生? 我没有编写打包/部署脚本的经验,这就
1回复

使用VS2010安装项目安装VB6应用程序

甚至可以使用VS2010安装项目来安装Visual Basic 6应用程序,以便它自动检测并包括其所有依赖性和其他内容? 我没有将整个代码转换成.NET的奢侈(很多东西)。 事实证明,VB6附带的打包和部署向导很麻烦。 或者,我可以使用InstallShiled来达到相同目的吗?
1回复

VB6 .OCX文件有效,但重新编译时不起作用(相同代码)

我正在更新使用.ocx文件与数据库进行通信的程序。 该程序可以与几个月前编译的.ocx版本配合使用。 但是,如果我尝试编译.ocx文件的新版本,则该程序不再希望与数据库进行通信。 我的第一个想法是.ocx文件的代码中一定有问题。 因此,我尝试打开.ocx项目的备份(该备份与工作中的.
3回复

在Win 2008 R2上使用VB6打包和部署向导注册.OCX和DLL文件

我正在尝试使用由软件包和部署向导创建的安装程序(在Win 2003上创建的安装程序)安装VB应用程序。 安装程序安装正常,我看到依赖项(ocx和dll文件)安装在sysWOW64文件夹中,而不是system32文件夹中(因为该应用程序是32位)。 但是,当我运行该应用程序时,它找不到ocx或
4回复

MSI安装程序远程失败 - 即使卸载后,也已安装“更新版本”

我开始使用我们的自动构建,这是一种奇怪的行为。 我有一个非常简单的Windows服务.msi(内置在Visual Studio 2010中),它在我们的中央构建/ repo服务器上编译,上传到我们的开发服务器,然后从构建/ repo服务器远程安装(命令行)在开发服务器上通过ssh使用plink