支持旧操作系统的开发


14

我维护着大部分用C编写的遗留代码。此代码最初被编写为针对Windows 3 for Workgroups进行编译,后来创建了NT版本。这个旧版应用程序至今仍在使用,自90年代初开始在3.11和NT工作站上愉快地运行。它可以正常工作,并且可以完成预期的工作,而它们仍然存在的原因是,属于该解决方案的某些自定义硬件的驱动程序与以后的Windows不兼容。

我维护了另一个应用程序,出于相同的原因,该应用程序仅在Win2k上有效。

但是,随着事情的发展,运行这些旧环境变得越来越困难。现在,我保留安装了开发软件的物理机,因此可以在本机硬件上工作。但是这些可能会随时死亡(毕竟他们已经25岁了)。

所以我的问题是,从2016年开始,我有什么选择可以更稳定地维护这一古老环境?您可以将3.11迁移到云托管吗?

我尝试了虚拟化,但是由于设置的特殊性,我无法使其与设备驱动程序一起使用,因此我认为可能需要按原样制作完整的操作系统映像,然后在一个操作系统中运行该映像。 VM开发软件?这样的事情可能对来宾操作系统版本一样古老WIN3和NT?

是否有任何经验可以使类似的旧平台存活下来进行开发,但是我可以借鉴更现代,更安全的方式?

我的目标是摆脱旧的物理机,然后转向虚拟化。


您尝试了哪种VM软件?VMware?如果没有,请尝试一下,我至少有一个硬件,但我得到的驱动程序只能与该软件一起使用,而没有其他VM软件。
布朗

此外:这将是最坏的情况下,如果硬件死了明天,你也没办法这么远?贵公司会破产吗?
布朗

我尝试了VMware和VirtualBox。在两个VirtualBox中,VirtualBox无法加载Win3,但设法加载NT4,但是没有CD,分辨率更改或鼠标支持。VMWare加载了Win3,但也缺少驱动程序,因此屏幕混乱了。现在,我正尝试切换到仿真,尝试PCem。此作品更好,但后来我得到了旧的硬件没有速度增长,而且我又VM东西一样共享磁盘等
理查德Tyregrim

3
老实说,当很难获得备件时,是时候考虑用更新的解决方案替换旧的了。在某个时间点上,保留这些旧内容要比重新创建至少一些新部分便宜。
布朗

1
您从哪里获得了自定义硬件的驱动程序?
JeffO

Answers:


4

该解决方案的某些自定义硬件的驱动程序与更高版本的Windows不兼容

这是问题的症结所在。您可以使用较新的Visual Studio重新编译旧版C程序,修复所有编译器警告和错误,并且通常将旧系统转换为可以在Windows 7上运行的相同系统(或如果需要,可以更新),但如果驱动程序不工作,那么即使虚拟化它的工作机会也很小。

除非您可以更新或更换驱动程序/硬件,否则我不会开始考虑它。


感谢您的回覆。我当时在想,可能会有类似于Win3机器上使用的实际硬件的VM或仿真选项,因此我可以用它来在该环境中安装自定义设备驱动程序,并连接设备,因此所有意图和目的似乎都在旧硬件上运行。同样,在重新编译时,就像我说的那样,代码使用了对Win API的大量低层调用以及内部结构中的一些讨厌的戳记。因此,我猜想这会在Win7桌面模型中打破,尽管我没有尝试将其完全移植。
理查德·泰瑞格里姆

2
您应该尝试快速进行端口尝试,只是想看看其中有多少是很难处理的-根据我的经验,古老的代码往往只用很少的一些真正被淘汰的东西就可以轻松地移植到新的Windows操作系统。
gbjbaanb's

4

我认为这更多的是关于使VirtualBox或vmware提供对主机串行端口的访问的问题,而不是关于虚拟化OS或客户机OS的问题。我将从运行现代操作系统(win 7/8/10或Linux发行版)的主机系统开始,该主机系统带有基于真实rs-232实现的USB到串行端口适配器,例如多产的pl2303。

使用现代操作系统作为主机,安装virtualbox,创建来宾VM并安装任何兼容的OS。关键是将来宾OS上的RS-232端口传递给来宾VM。使用空调制解调器和终端程序来确保RS-232端口在本地主机OS上正常工作。

如果主机是Linux,则需要一些权限才能虚拟化本地硬件,在大多数情况下,将您的登录帐户放入vboxusers组即可。


2

这是一项管理决定。您的管理层应该能够确定他们通过支持Windows 3.11赚了多少钱。如果他们有什么头脑,他们会意识到,如果您不免费支持他们而抱怨的客户实际上并不会赚钱。您可以通过告诉他们支持旧版本的成本来支持他们。不仅在实际工作方面,而且在无法使用更新技术方面。

您应该支持机器的最新时间是您无法在eBay上购买替代产品。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.