Приложение PowerBuilder 10.5 с 32-разрядной версии Windows XP до 64-разрядной версии Windows 7
В настоящее время у меня есть 32-разрядное приложение PowerBuilder, которое мы пытаемся перенести в 64-разрядную среду Windows 7. Понимание очевидного факта, что PowerBuilder 10.5 был построен ранее до выхода Window7, а также очевидного факта, что это приложение было создано в 32-битной среде Windows XP.
32-разрядное приложение PowerBuilder выдает следующее сообщение об ошибке при развертывании на 64-разрядной машине Windows 7. Приложение прекращено. Ошибка: недопустимая строка / столбец DataWindow, указанная в строке 44 в функции ivvisiblecolumn объекта objectwindow
Настройка профиля базы данных указывает на OLEDB, а внутренняя база данных - MSSQL 2008. В настоящее время приложение работает в 64-разрядной среде Windows7 и, похоже, работает только в режиме запроса. Это означает, что мы можем прочитать некоторые записи в окне данных, но как только вы попытаетесь совершить транзакцию, она взорвется.
Мой вопрос - возможно ли заставить 32-битное приложение работать в 64-битной среде?
Пока что клиент просит найти возможные решения без необходимости обновления до PowerBuilder 12.5. По сути, они хотят остаться на уровне 10,5, но все же заставить приложение работать из 32-битной среды в 64-битную... от яблок до апельсинов, если вы понимаете, о чем я. Требуется дальнейшее изучение вопроса о том, не будет ли код работать в 64-битной среде, или проблемы DLL с клиентской средой Powerbuilder в 64-битной среде. Они действительно стараются держаться подальше от переписывания любого приложения, так как приложение старше, чем когда Христос был плотником. Приложение изначально было встроено в PB 6.5, я думаю.
Пока у меня есть следующие идеи, но я новичок в этом: - Я понимаю, что Windows 7 поставляется с виртуальной машиной IIRC. Я думаю, что это называется WOW64. Можно ли создать виртуальный сервер и заставить пользователей запускать 32-разрядное приложение на 64-разрядном компьютере? Затем создайте ярлык Somekind для пользователя, чтобы просто нажать?
- У нас есть виртуальная машина XP и 64-битная машина Windows7 для тестирования. PowerBuilder 10.5 фактически установлен на Windows 7 и, кажется, работает нормально. Однако запуск приложения в режиме запуска или отладки вызывает много ошибок, как вы можете себе представить.
- Приложение было встроено в XP и работает на Windows 7, но результаты выдают указанное выше сообщение об ошибке.
- Я еще не заглядывал в режим "Выполнить под совместимостью", но команда сообщила, что он не будет работать.
Я еще не смотрел UAC или управление пользователями ALC. Может ли это быть что-то, что влияет на 64-битную систему?
Я знаю, что это приложение не связано, но... Я видел, как в некоторых случаях 32-битные приложения работают в 64-битной среде Windows, просто ориентируясь на определенные DLL-файлы. В качестве примера можно привести Microsoft Flight Simulator X, в котором 32-разрядная игра зависала в 64-разрядной версии Windows 7. Решением для этого было просто взять 64-битный DLL-файл Vista с именем uiautomationcore.dll и скопировать его в среду Windows. Игры также должны быть установлены в корне C: для того, чтобы работать.
У кого-нибудь есть какие-либо рекомендации о том, как я могу подойти к этой проблеме?
Я прошу прощения, если я неясен в моих заметках здесь.
ОБНОВЛЕНИЕ: Кто-нибудь имел опыт работы с файлами PB 10.5 на 64-битной машине? Мне интересно, если во время выполнения клиента PowerBuild установил свои библиотеки в правильное местоположение приложения C:\XXX или не может найти его? Хотите знать, как подойти к этому.
2 ответа
- По сути, ничто не должно мешать запуску приложения 10,5 ПБ на Win7/64. Я разрабатываю и запускаю несколько продуктов в PB11.5 (также 32-битной IDE) на win7/64. И между прочим, некоторые старые PB, такие как 9, все еще работают на Win7, так что, вероятно, PB6.5. Проблема должна быть в другом месте, относительно дизайна приложения.
- WoW64 (и Wow6432Node в реестре) - это не настоящая виртуальная машина, это набор сервисов и системный 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
... - Вы могли бы попробовать с http://dependencywalker.com/, чтобы найти неправильные проблемы DLL
Мы переместили многие из наших приложений на Windows 7 64bit. Единственная проблема, с которой мы столкнулись, была с соединениями с базой данных. Вы используете 32-битное приложение, поэтому вам нужно подключиться к 32-битной базе данных. Если вы откроете "Источники данных (ODBC)" с панели управления, вы увидите 64-битные записи. Вам необходимо использовать 32-битный ODBC, находящийся в "C:\Windows\SysWOW64\odbcad32.exe". Записи реестра, которые вам нужны, находятся в следующих местах...
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