1

現在、Windows 7 64 ビット環境に移植しようとしている 32 ビット PowerBuilder アプリケーションがあります。Window7 が登場する前に PowerBuilder 10.5 が以前にビルドされたという明白な事実と、このアプリケーションが Windows XP 32 ビット環境内でビルドされたという明白な事実に気づきました。

32 ビットの PowerBuilder アプリケーションは、Windows 7 64 ビット マシンに配布されると、次のエラー メッセージを吐き出します。 アプリケーションは終了しました。エラー:オブジェクトobjectwindowの関数ivvisiblecolumnの44 行目に指定されたデータウィンドウの行/列が無効です

データベース プロファイルのセットアップは 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 ビット アプリケーションを実行させることは可能ですか? 次に、ユーザーがクリックするだけのショートカットを作成しますか?

  • テスト用に仮想 XP マシンと仮想 Windows7 64 ビット マシンがあります。PowerBuilder 10.5 は実際に Windows 7 にインストールされ、問題なく動作しているようです。ただし、実行モードまたはデバッグでアプリケーションを実行すると、ご想像のとおり多くのエラーが発生します。
  • アプリケーションは XP でビルドされ、Windows 7 で実行されますが、結果として上記のエラー メッセージが表示されます。
  • Run under Compatibility モードについてはまだ調べていませんが、チームからは機能しないと言われています。
  • UAC や ALC のユーザー管理についてはまだ見ていません。それは 64 ビット システムに影響を与えるものでしょうか?

  • これがアプリとは無関係であることはわかっていますが...特定の DLL ファイルをターゲットにするだけで、Windows 64 ビット環境で 32 ビット アプリケーションが動作する場合があります。例として、Windows 7 64 ビットで 32 ビット ゲームがクラッシュする Microsoft Flight Simulator X があります。その解決策は、uiautomationcore.dll という名前の Vista 64 ビット DLL ファイルを取得し、それを Windows 環境にコピーすることでした。また、ゲームを動作させるには、C: のルートにインストールする必要があります。

この問題にどのようにアプローチできるかについて、誰かに推奨事項はありますか?

ここでのメモがあいまいな場合は、お詫び申し上げます。

更新: 64 ビット マシンで PB 10.5 ランタイム ファイルを使用した経験のある人はいますか? powerbuilder クライアント ランタイムがその dll をアプリケーション C:\XXX の正しい場所にインストールしているのか、それとも見つからないのか疑問に思っています。これにどのようにアプローチするか疑問に思います。

4

2 に答える 2

1
  • 基本的に、10.5 PB のアプリを Win7/64 で実行することを妨げるものは何もありません。win7/64 で PB11.5 (32 ビット IDE) でいくつかの製品を開発して実行しています。ところで、9 のような一部の古い PB はまだ Win7 で実行されているため、PB6.5 である可能性があります。問題は、アプリの設計に関連して、別の場所にあるはずです。
  • WoW64 (およびレジストリ内の Wow6432Node) は真の VM ではなく、32 ビット アプリケーション (および Vista 以降に導入されたノベルティに準拠しないレガシー アプリケーション) のフォールバックにフックされた一連のサービスとシステム API です。
  • Error: Invalid DataWindow row/column specified at line 44 in function ivvisiblecolumn of object objectwindow通常、誤って処理された戻り値のように聞こえます (指定された無効な行のプロパティまたはデータにアクセスしようとする前に、計算された行番号が負または null になる場合)。挿入後のデータベース
  • 特にアプリケーションがデータベースを使用している場合は、レガシー アプリケーションで予期しない動作につながる可能性のある UAC 管理に注意してください。UAC ガイドラインでは、アプリケーションによって管理されるデータProgram Filesを現在読み取り専用のフォルダーにインストールしないように指示されています (Vista 以降 - そのガイドラインXP以降です)。代わりにProgramData、誰でもアクセスできる場合はサブディレクトリにAppData、データが現在のユーザーだけのものである場合はユーザーローカルに配置する必要があります。Win7/Vista は、データをユーザーに対してローカルに複製することで標準に静かに準拠できますUsers\username\AppData\Local\VirtualStore( Program Files.
  • Dependency Walkerを試して、間違った dll の問題を探すことができます
于 2013-03-25T15:34:45.967 に答える
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
于 2013-03-25T15:49:47.943 に答える