Windows XP 32位到Windows 7 64位上的PowerBuilder 10.5应用程序 [英] PowerBuilder 10.5 Application on Windows XP 32-bit to Windows 7 64-bit

查看:193
本文介绍了Windows XP 32位到Windows 7 64位上的PowerBuilder 10.5应用程序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我目前有一个32位PowerBuilder应用程序,我们正在尝试将其移植到Windows 7 64位环境中.显而易见的是,PowerBuilder 10.5之前是在Window7发行之前就已经构建的,而且还很明显,这个应用程序是在Windows XP 32位环境中构建的.

I currently have a 32-bit PowerBuilder application that we are trying to port over to a Windows 7 64-bit environment. Realizing the obvious that PowerBuilder 10.5 was built previously before Window7 came out and the big also the obvious fact that this application was built within a Windows XP 32-bit environment.

当在Windows 7 64位计算机上部署时,该32位PowerBuilder应用程序会显示以下错误消息. 应用程序已终止.错误:对象 objectwindow

The 32-bit PowerBuilder application spits out the following error message when deployed on a Windows 7 64-bit machine. Application Terminated. Error: Invalid DataWindow row/column specified at line 44 in function ivvisiblecolumn of object objectwindow

数据库配置文件设置指向OLEDB,后端数据库为MSSQL2008.当前,该应用程序确实在Windows7 64位环境上运行,并且似乎仅在查询模式下工作.这意味着我们可以读取数据窗口上的某些记录,但是一旦您尝试进行事务处理,它就会崩溃.

The database profile setup points to an OLEDB and the backend database is MSSQL 2008. Currently the application does run on the Windows7 64-bit environment and seems to be working in an inquiry mode only. Meaning we can read some of the records on the datawindow, but as soon as you try to make a transaction it blows up.

我的问题是-是否可以在64位环境中运行32位应用程序?

My question is - Is it possible to get a 32-bit app working in a 64-bit environment?

到目前为止,客户要求提出可能的解决方案,而没有升级到PowerBuilder 12.5的想法.从本质上讲,他们希望保持在10.5,但要使该应用程序从32位环境转换为64位...如果知道我的意思,则从苹果到橘子.需要进一步研究该代码在64bit的Powerbuilder客户端运行时是否在64bit或dll问题下不起作用.他们真的在努力避免任何应用程序重写,因为该应用程序比基督当木匠的年龄还老.我认为该应用最初是在PB 6.5中构建的.

So far the client is asking to come up with possible solutions without the idea of upgrading to PowerBuilder 12.5. Essentially they want to stay at 10.5 but yet get the app working from a 32-bit environment to a 64-bit...apples to oranges if you know what I mean. Further investigation is needed into whether the code will not function in 64bit or dll issues with powerbuilder client runtime in 64bit. They are really trying to stay away from any app rewrite since the application is older than when Christ was a carpenter. The app was originally built in PB 6.5 I think.

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

So far I have the following ideas but I am new to this: - I understand that Windows 7 comes with a virtual machine IIRC. I think it's called WOW64. Is it possible to create a virtual on a server and have the users run a 32-bit application inside a 64-bit machine? Then create a shortcut of somekind for the user to simply click on?

  • 我们确实有一台虚拟XP机器和一台虚拟Windows7 64位机器进行测试. PowerBuilder 10.5实际上已安装在Windows 7上,并且工作正常.但是,在运行模式下运行应用程序或调试会导致许多错误,您可以想像.
  • 该应用程序已在XP中构建并可以在Windows 7上运行,但结果显示上述错误消息.
  • 我还没有考虑过在兼容模式下运行",但是团队告诉我它不起作用.
  • 我尚未查看UAC或ALC用户管理.会影响64位系统吗?

  • We do have a virtual XP machine and a virtual Windows7 64 bit machine for testing. PowerBuilder 10.5 actually installed on Windows 7 and seems to be working fine. However running the application in run mode or debug causes many errors as you can imagine.
  • The application has been built in XP and run on Windows 7, but the results yeild the above error message.
  • I have not looked yet into the Run under Compatibility mode, but I am told by the team it will not work.
  • I have not looked at UAC or ALC User management yet. Could that be something affecting the 64-bit system?

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

I know this is app unrelated but...I have seen in some cases 32-bit applications work in a windows 64-bit environment by simply targeting certain DLL files. An example case is Microsoft Flight Simulator X where the 32-bit game would crash in windows 7 64-bit. The solution for that was to simply go get a Vista 64-bit DLL file called uiautomationcore.dll and copy that into the windows environment. The Games also have to be installed on the root of C: in order to work.

有人对我如何解决此问题有任何建议吗?

Does anyone have any recommendations on how I can approach this problem?

如果在此处的注释中含糊,我深表歉意.

I apologize If I'm vague in my notes here.

更新:有没有人对64位计算机上的PB 10.5运行时文件有任何经验?我想知道powerbuilder客户端运行时是否将其dll安装到应用程序C:\ XXX的正确位置,还是找不到?想知道如何解决这个问题.

推荐答案

  • 基本上没有什么可以阻止10.5 PB应用程序在Win7/64上运行.我在win7/64上的PB11.5(也是32位IDE)中开发和运行了多个产品.顺便说一句,某些较旧的PB(如9)仍可以在Win7上运行,因此PB6.5很有可能.问题必须在其他方面,相对于应用程序设计.
  • WoW64(和注册表中的Wow6432Node)不是真正的VM,它是一堆服务和系统API,它们都与32位应用程序(以及不符合自Vista以来引入的新奇特征的旧版应用程序)的后备挂钩.
  • Error: Invalid DataWindow row/column specified at line 44 in function ivvisiblecolumn of object objectwindow听起来通常像是一个错误处理的返回值(在试图访问该给定无效行的属性或数据之前,计算出的行号为负或空),或者它可能与获取方式有关插入后从数据库返回自动增量值
  • 当心UAC管理可能会导致旧版应用程序发生意外行为,尤其是在该应用程序使用数据库的情况下:UAC准则指示不要在现在为只读的Program Files文件夹中安装由该应用程序管理的数据(自Vista开始-该指南自XP以来).相反,如果每个人都可以访问它,则必须将其放置在ProgramData子目录中;如果数据仅用于当前用户,则必须将其放置在用户本地AppData中. Win7/Vista可以通过向用户本地复制数据(在Users\username\AppData\Local\VirtualStore中)来静默地符合标准,同时仍然假装应用程序当前正在从Program Files ...
  • 访问它.
  • 您可以尝试使用 Dependency Walker 查找不正确的dll问题
    • Basically nothing should prevent a 10.5 PB app to run on Win7/64. I develop and run several products in PB11.5 (also a 32bit IDE) on a win7/64. And btw, some older PB like 9 still run on Win7, so is likely PB6.5. The problem must be elsewhere, relative to the app design.
    • WoW64 (and Wow6432Node in the registry) is not a true VM, it's a bunch of services and system API hooked with fallbacks for 32 bit applications (and legacy applications that do not conform to the novelties introduced since Vista)
    • Error: Invalid DataWindow row/column specified at line 44 in function ivvisiblecolumn of object objectwindow sounds typically like an incorrectly handled return value (where a computed row number is getting negative or null before trying to access a property or data at that given invalid row), or it could be relative to the way to get back an autoincrement value from the db after an insert
    • beware of the UAC management that could lead to unexpected behavior with legacy application, especially if the application is using a database: the UAC guidelines tells not to install data managed by the application in the Program Files folder that is now Read only (since Vista - that guideline is since XP). Instead you must put that into a ProgramData sub-directory if it is accessible by everyone and into a user local AppData if the data is just for the current user. Win7/Vista can silently conforms to the standard by duplicating the data locally to the user (in the Users\username\AppData\Local\VirtualStore) while still pretending to the application that it is currently accessing it from Program Files...
    • you could give a try with Dependency Walker to look for the incorrect dll problems
    • 这篇关于Windows XP 32位到Windows 7 64位上的PowerBuilder 10.5应用程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆