如何在64位Win7上执行16位安装程序?

26

我正尝试在Win7 64位系统上安装Sheridan控件(ActiveThreed 2.01),但显然它是一个16位的安装程序,因此无法执行。

那么解决这个问题的最佳方法是什么?

错误消息

有人能评论一下http://homepage3.nifty.com/takeda-toshiya/msdos/index.html是否有帮助吗?


这些控件似乎是32位且已过时... - Martin Samson
是的,我已经快速谷歌搜索了ActiveThreed并看到了一些32位ActiveX。正如Cody Gray所说,您应该升级需要控件的应用程序或在虚拟机中运行旧的Windows操作系统。 - Martin Samson
请参见此问题 - JimmyPena
@JP:我已经删除了你添加的vb6标签,因为它实际上与vb6无关。这只是一个16位安装程序,试图在64位Win7上安装。 - CJ7
我的错。我假设你在使用VB6,因为你最近的大部分问题都与VB6有关,并且你在评论Cody Gray时提到了VB6。 - JimmyPena
显示剩余2条评论
7个回答

33

我花了数月时间在谷歌上寻找解决这个问题的方法。你不需要安装一个运行在32位Windows上的虚拟环境来运行一个16位安装程序的程序,而是可以采用以下方法。如果程序本身是32位的,只有安装程序是16位的,那么这就是你的答案。

有一些方法可以修改16位安装程序,使其变成32位,以便在64位Windows 7上安装。我在这个网站上找到了解决方案:

http://www.reactos.org/forum/viewtopic.php?f=22&t=10988

在我的情况下,安装程序是 InstallShield 5.X。问题在于,InstallShield 5.X 使用的 setup.exe 程序是 16 位的。首先,我提取了安装程序内容(将扩展名从 .exe 改为 .zip,打开并提取)。然后,我用 InstallShield 的 32 位版本的 setup.exe 替换了磁盘1文件夹中原始的16位setup.exe(从上面链接中引用的网站下载此文件)。然后我只需运行磁盘1中的新的32位setup.exe以开始安装,我的程序就能在64位Windows上完美安装和运行。
您还可以重新打包这个修改后的安装程序,使用像 Inno Setup 5 这样的免费程序作为安装程序进行分发。

太好了!我花了很多时间在64位Win7上尝试安装我的扫描仪,甚至在虚拟机中安装它并使用特殊软件来跟踪注册表更改,但这都没有帮助!现在它完美地工作了! - Anixx
另一个关于如何做到这一点的好总结:http://blog.ryankempt.com/2013/12/64-bit-windows-unsupported-16-bit.html;设置文件的另一个下载链接是http://toastytech.com/files/setup.html。 - mthomas
非常感谢。我想补充一下,安装程序(v3)仍然抱怨缺少文件,直到我将兼容模式更改为Windows 95并将其设置为管理员运行。 - mickadoo
今天这个对我在Broderbund(1998)的Print Shop 6有所帮助。安装程序是InstallShield 3。非常感谢您提供的链接! - A.Konzel
谢谢,这正是我急需的建议。 - AlanK

7

在64位的Windows版本上无法运行16位应用程序(或组件)。那种仿真层已经不存在了。64位版本已经必须为32位应用程序提供兼容性层。

即使在一个注重向后兼容的文化中,最终也必须放弃支持16位。转换到64位似乎是任何时候都不错的选择。很难想象还有人在使用16位应用程序并寻求升级到64位操作系统。

如何解决这个问题?

如果该组件本身是16位的,则使用运行32位Windows的虚拟机是您唯一的选择。 Oracle's VirtualBox是免费的,而且一直备受喜爱。

如果只有安装程序是16位的(但它会安装一个32位的组件),那么您可能可以使用类似 7-Zip 的程序提取安装程序的内容并手动安装。让我们说这个“解决方案”是高风险的,您应该没有什么期望值。
现在是升级脱离16位工具的时候了,例如 Turbo C++ 和 Sheridan 控件。我还没有遇到过任何 Sheridan 控件能做到而内置控件不能自行完成的事情,这种情况从 Windows 95 开始就已经存在了。

1
明白您的观点,但是维护这个VB6产品是不可避免的。如果要用本地控件替换Sheridan控件,那么成本将会很高。在32位机器上进行开发比替换控件更好。我希望能够在Win7 64位系统上安装所有必要的软件。 - CJ7
1
这就是那种成本效益分析,必然会将公司变成恐龙。确保这家公司也不要把你拖入那个深渊。 - Hans Passant
1
@HansPassant:为了防御,同时有一个项目在运行,对产品进行重写。 - CJ7

3
我在Infragistics论坛上发布了一些关于设计师小部件的信息,这可能对你有所帮助。你可以通过以下链接查看帖子:
http://forums.infragistics.com/forums/p/52530/320151.aspx#320151

请注意,不同产品的注册表键可能不同,您可能需要在32位计算机上安装以查看所需的键。

1
我通过在32位系统上安装并将Sheridan注册表键复制到64位机器上使其正常工作。 - CJ7

1

我主要发布这篇文章是为了提醒那些不知道VB2005和VB2008有更新工具可以将旧版本的VB转换成新格式的人。特别是因为没有人指出这一点。

虽然有所顾虑,但维护这个VB6产品是不可避免的。用本地控件替换Sheridan控件也会耗费大量人力。在32位机器上开发比这样做更好。我希望能够在Win7 64位上安装所有东西。- CJ7

您尝试过使用VB Express 2005+的代码升级功能吗?

如果没有, 1. 复制您的代码 - 包括文件夹和所有内容。 2. 将项目导入VB express 2005中。 这将激活更新向导。 3. 调试并运行应用程序。 4. 利用MS免费工具创建一个新的安装程序。 5. 现在您有一个带有32位安装程序的32位应用程序。

在您执行此操作之前,您永远不会知道更新和现代化程序有多么困难或艰巨。 向导很可能会将Sheridan控件更新为VB 2005控件。但是,除非您尝试,否则您将不知道它是否这样做以及它的效果如何。

或者,继续使用Windows 7和8的32位版本。 我有Windows 7 x64和一个无法运行的程序。然而, 该程序将在Windows 7 32位以及Windows 8 RC 32位上运行。 在Windows 8 RC 32下,我被提示启用16位仿真 我这样做了,程序在之后运行得非常好。


1
我的程序行数远远超过了VS2005+升级工具所允许的最大值。 - CJ7

0

我有一个16位安装程序的32位软件,但我无法解压缩。我使用otvdm解决了这个问题,它可以让你在win64上运行windows 1.x、2.x、3程序。实际上,otvdmw允许你选择要运行的程序(otvdm是命令行)。


-1

16位安装程序在Windows 7上无法运行,因为它已经不再被Win 7支持。能够运行16位安装程序的最新支持版本的Windows是Vista 32位,即使是Vista 64位也不支持16位安装程序...参考http://support.microsoft.com/kb/946765


我非常确定 Windows 7 32 位的一半目的是为了支持 16 位程序的运行? - SamB

-5

底线:获取更新的程序或获取旧计算机。

解决方案很简单。虽然很让人难受,但很简单。对于旧程序,请保持旧计算机的运行状态。有时候,你在新游戏中找不到与旧游戏相同的游戏体验。有时候,没有新的同类软件可以做同样的事情。在这种情况下,基本上你只有两个选择。好消息是,旧计算机的价格在 20 到 100 美元之间,这可以买到整个系统;显示器、塔式机、键盘、鼠标和扬声器。如果您有耐心运行旧程序,那么您应该有耐心在求职广告中找到自己需要的东西。我有 4 台旧计算机在运行;2 台运行 Windows 98,2 台运行 Windows XP。我和我的妻子各自拥有一台 Win7 计算机。


5
这个回答不够具有建设性。在企业系统中,你需要使用现有的资源。此外,这个问题已经5个月前被询问过了,作者可能已经放弃或已经找到了解决方案。通常情况下,“再买一台电脑”的解决方案是不被认可的,除非问题明显是由硬件故障引起的情况。 - Wug
2
@Wug:我同意第一个观点,但不同意第二个观点。人们并不会那么快地放下问题。有时候问题会被搁置一旁,直到找到解决方案。 - CJ7

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接