更新旧VB6应用程序的最佳方法

更新旧VB6应用程序的最佳方法,vb6,installation,Vb6,Installation,最近,一家小型的ma和pa商店来找我,要求更新一个vb6程序,这是他们以前的一名兼职员工从大学回家时为他们制作的。在cd上,学生提供了程序的源代码和安装程序,这非常有帮助。我想给他们一张新的cd,里面有新的安装程序和更新的源代码。我的问题是,对于2008年进入“不受支持阶段”的语言,如何创建或更新安装程序 更新: 为了回答一些问题,他们要求的更新只是更改一些标签的措辞,并将一个控件从文本框更改为组合框。他们是一家文学硕士和文学硕士的商店,不想花钱让应用程序重新编写成一种新的语言,即使它已经被推荐

最近,一家小型的ma和pa商店来找我,要求更新一个vb6程序,这是他们以前的一名兼职员工从大学回家时为他们制作的。在cd上,学生提供了程序的源代码和安装程序,这非常有帮助。我想给他们一张新的cd,里面有新的安装程序和更新的源代码。我的问题是,对于2008年进入“不受支持阶段”的语言,如何创建或更新安装程序

更新:
为了回答一些问题,他们要求的更新只是更改一些标签的措辞,并将一个控件从文本框更改为组合框。他们是一家文学硕士和文学硕士的商店,不想花钱让应用程序重新编写成一种新的语言,即使它已经被推荐了

您可以将VB6项目转换为.NET

如果您有Visual Studio 2005或更高版本。。。 或者更糟糕的情况是使用VB.NET重新编写代码。 转到此链接


如果我没记错的话,Visual Studio 6附带了一个基本向导,用于为VB6应用程序创建安装程序。因此,假设您已经为VB6安装了Visual Studio 6,那么应该有一个可以使用的安装程序向导。但是,在Vista或Win 7机器上部署VB6运行时可能会有问题。也许另一位SO大师会对此有答案


您还可以使用免费软件Inno安装程序为VB6应用程序创建安装程序。可以找到更多信息。但是,与Visual Studio相比,它需要更多的手动操作。

您需要一份Visual Basic 6(或Visual Studio 6)的副本,这很难做到。如果你有MSDN订阅,我很确定你可以从他们的档案中下载,但如果没有,你可能需要购买一份。查看易趣。让ma和pa商店自费购买,并且他们应该拥有它,以防将来需要进行更改。如果你是唯一一个使用它的人,你可以代表他们使用它来为他们工作,完成后卸载它

此外,如果您有Visual Studio 2005的副本,从技术上讲,您可以“降级”到VS6,但您必须致电Microsoft,让他们向您发送安装程序,并且不允许您将VS2005与VS6同时使用。是的,我知道

好的,如果你已经做到了这一点,在你的计算机上获取源代码,并将其置于源代码控制之下。我建议Mercurial(特别是陆龟客户)。我在一个VB6项目中很幸运,它是免费的。(不要使用SourceSafe,即使它在VS6中是免费的!)Mercurial存储库的分布式特性意味着您可以将一张包含整个存储库的CD交还给他们,而下一个需要进行更改的可怜的sap至少能够做一些区分,并知道您做了什么

正如这里的其他人所说,VB6有一个用于制作安装程序的内置实用程序,但我认为必须有企业版。在你得到一份拷贝之前,这是值得一试的

现在继续进行更改,但要非常小心。请记住,您可能没有任何单元测试,因此很可能会破坏这些内容。如果你想成为这方面的专业人士,有一些针对VB6的单元测试框架。例如。同样,我建议让客户购买一份拷贝(我想,一个开发者席位大约99美元)。如果改变不仅仅是在闪屏上改变公司标志,那么这就是我要投资的东西。编写涵盖您将要更改的每个模块或功能的测试。如果所有逻辑都在表单本身的事件处理程序中,请小心地删除需要更改为可以编写单元测试的模块的代码。首先编写测试以验证当前功能

然后继续做你的改变。如果您在设置测试框架方面遇到了麻烦,那么您最好使用一些TDD并首先编写测试。编写一个测试,确保它失败,编写足够的代码使其通过,然后重复

所有这些仍然需要您有一个可靠的手动测试计划,以便在最后检查功能。这意味着你需要牢牢掌握它的功能。你几乎可以假设,无论你多么小心,你都会弄坏你不懂的东西。确保给自己足够的时间来解决交付后出现的其他问题

我建议不要在.NET中重新编写它,除非它是一个只有一种表单的非常简单的程序。这种努力可能不值得

警告:注意原始程序员可能使用过但未包含在CD中的第三方组件。如果他们使用了从第三方购买的ActiveX或COM内容,但他们没有向您的客户授予许可证,那么您可能不得不再次购买它,以便进行编译

编辑

基于您的额外信息,如果您真的只是更改了一些控件和措辞,那么我认为您可以不使用单元测试框架。不过,我肯定会使用一些源代码管理


我确实记得使用包和部署向导,我同意它很糟糕。现在想想,我实际上使用了第三方安装程序。但是,如果更改很小,并且原始应用程序使用了PDW,我可能会坚持使用它。

应该注意的是,转换器不支持VB6的所有功能,因此,根据这位员工的“聪明程度”,您可能最终不得不重写部分应用程序(或整个应用程序)。不仅如此“不支持VB 6的所有功能”,自动转换器基本上是一个笑话。不管最初的程序员有多“聪明”,你最终都会重写太多代码,以至于你一开始可能还没有开始。如果我们能弄清楚是什么,有更好的策略