PowerBuilder 10.5应用程序在Windows XP 32位到Windows 7 64位

时间:2013-03-25 14:30:09

标签: windows-7 oledb powerbuilder powerbuilder-build-deploy

我目前有一个32位PowerBuilder应用程序,我们正试图移植到Windows 7 64位环境。意识到PowerBuilder 10.5是在Window7出现之前构建的,而且很明显这个应用程序是在Windows XP 32位环境中构建的。

32位PowerBuilder应用程序在Windows 7 64位计算机上部署时会发出以下错误消息。 申请已终止。错误:对象 objectwindow 的函数 ivvisiblecolumn 中第44行指定的DataWindow行/列无效

数据库配置文件设置指向OLEDB,后端数据库是MSSQL 2008.目前,该应用程序确实在Windows7 64位环境中运行,并且似乎仅在查询模式下工作。这意味着我们可以读取数据窗口中的一些记录,但是一旦您尝试进行交易,它就会爆炸。

我的问题是 - 是否有可能让一个32位应用程序在64位环境中工作?

到目前为止,客户要求提出可能的解决方案而不想升级到PowerBuilder 12.5。从本质上讲,他们希望保持在10.5但是如果你知道我的意思,那么应用程序可以从32位环境工作到64位......苹果到橙子。需要进一步调查代码是否无法在64位或64位的powerbuilder客户端运行时的dll问题中运行。他们真的试图远离任何应用程序重写,因为应用程序比基督是木匠时更老。该应用程序最初是在PB 6.5中构建的。我认为。

到目前为止,我有以下想法,但我是新手: - 我知道Windows 7附带了虚拟机IIRC。我认为它叫做WOW64。是否可以在服务器上创建虚拟机并让用户在64位计算机内运行32位应用程序?然后为用户创建一个somekind的快捷方式,只需单击?

  • 我们有一台虚拟XP机器和一台虚拟Windows7 64位机器进行测试。 PowerBuilder 10.5实际安装在Windows 7上,似乎运行正常。但是,在运行模式或调试中运行应用程序会导致许多错误,如您所想。
  • 该应用程序已在XP中构建并在Windows 7上运行,但结果显示上述错误消息。
  • 我还没有进入兼容模式下的Run,但团队告诉我它不会工作。
  • 我还没有看过UAC或ALC用户管理。这可能是影响64位系统的东西吗?

  • 我知道这是应用程序无关但...我在某些情况下看到32位应用程序通过简单地定位某些DLL文件在Windows 64位环境中工作。一个示例案例是Microsoft Flight Simulator X,其中32位游戏将在Windows 7 64位中崩溃。解决方案是简单地获取名为uiautomationcore.dll的Vista 64位DLL文件并将其复制到Windows环境中。游戏也必须安装在C的根目录上才能工作。

有没有人对如何解决这个问题有任何建议?

我道歉如果我在这里的笔记中含糊不清。

更新:有没有人在64位计算机上有过使用PB 10.5运行时文件的经验?我想知道powerbuilder客户端运行时是否将其dll安装到应用程序C:\ XXX的正确位置或无法找到它?想知道如何处理这个问题。

2 个答案:

答案 0 :(得分:1)

  • 基本上没有什么可以阻止10.5 PB应用在Win7 / 64上运行。我在win7 / 64上开发和运行PB11.5(也是32位IDE)中的几个产品。顺便说一句,一些像9这样的旧PB仍在Win7上运行,所以很可能是PB6.5。相对于应用程序设计,问题必须在其他地方。
  • WoW64(以及注册表中的Wow6432Node)不是真正的虚拟机,它是一堆服务和系统API,它们与32位应用程序(以及不符合自Vista以来引入的新颖性的旧版应用程序)的回退相连接。
  • Error: Invalid DataWindow row/column specified at line 44 in function ivvisiblecolumn of object objectwindow声音通常类似于错误处理的返回值(在尝试访问该给定无效行的属性或数据之前,计算的行号变为负数或null),或者它可能与路径相关在插入
  • 后从db中获取自动增量值
  • 要注意可能导致遗留应用程序出现意外行为的UAC管理,尤其是在应用程序使用数据库的情况下:UAC指南告诉不要将应用程序管理的数据安装在现在的Program Files文件夹中只读(自Vista以来 - 该指南自XP起)。相反,如果数据仅适用于当前用户,则必须将其放入ProgramData子目录(如果每个人都可以访问)和本地用户AppData。 Win7 / Vista可以通过在本地向用户复制数据(在Users\username\AppData\Local\VirtualStore中)静默地符合标准,同时仍假装应用程序当前正从Program Files访问它...
  • 您可以尝试使用Dependency Walker来查找不正确的dll问题

答案 1 :(得分:0)

我们将许多应用程序迁移到Windows 7 64位。我们遇到的唯一问题是数据库连接。您正在运行32位应用程序,因此您需要连接到32位数据库。如果从控制面板调出“数据源(ODBC)”,则将查看64位条目。您需要使用“C:\ Windows \ SysWOW64 \ odbcad32.exe”中找到的32位ODBC。您需要的注册表条目位于以下位置......

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBCINST.INI
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBCINST.INI\ODBC Drivers
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBC.INI
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBC.INI\ODBC Data Sources

HKEY_CURRENT_USER\SOFTWARE\Wow6432Node\ODBC\ODBCINST.INI
HKEY_CURRENT_USER\SOFTWARE\Wow6432Node\ODBC\ODBCINST.INI\ODBC Drivers
HKEY_CURRENT_USER\SOFTWARE\Wow6432Node\ODBC\ODBC.INI
HKEY_CURRENT_USER\SOFTWARE\Wow6432Node\ODBC\ODBC.INI\ODBC Data Sources