Проблема с созданием профиля в приложении Citrix для PowerBuilder 12
У нас есть приложение PowerBuilder 12.1, которое мы работали на 64-разрядном сервере Windows 2008 R2. Мы пытаемся запустить это приложение в нашей новой среде XenApp Citrix. Если профиль не существует для пользователя при запуске приложения PB, он начинает создавать профиль - он создает все виды каталогов и подкаталогов. Не уверен почему. Но, прежде чем профиль будет завершен, он взорвется и выполнение будет прервано. Если пользователь без профиля сначала запускает WordPad - профиль создается правильно. После создания профиля приложение PB можно запустить без проблем. Мы помещаем всплывающее диалоговое окно в приложение PB во второй строке основной программы, и когда профиль отсутствует и выполнение прекращается, всплывающее окно никогда не вызывается. После создания профиля, как и в случае с WordPad, запускается приложение PB, всплывающее окно отображается, как и ожидалось.
Кто-нибудь видел такое поведение? Я не уверен, что может быть причиной этого, и у него нет доступа к серверу Citrix, и он управляется нашей группой технической поддержки. Они говорят, что проблема в приложении PB. Я не уверен. Будем очень благодарны за любые идеи о том, как мы можем решить эту проблему. Приложения PB должны запускаться в Citrix, верно? Я не знаю, каков процесс запуска приложения PB в такой среде, но я думаю, что выполнение начнется в основной программе. Это правильно?
Заранее спасибо, Bill44077
1 ответ
Если вы не можете сохранить профиль пользователя в Citrix из-за разрешений, это работает хорошо, и вы можете использовать его для веб-приложений или приложений n-уровня (на стороне сервера).
Добавьте таблицу базы данных в вашу систему для имитации функциональности профиля PB.
Новая таблица:
// citrix_user_profile (new table pseudo-code)
//
// id = identity, not null
// userid = type of userid in your DB, not null
// filename = char, not null
// section = char, not null
// key = char, not null
// value = char null
1. Создайте новый пользовательский невизуальный объект пользователя: n_user_profile
2. Добавьте переменные экземпляра, похожие на:
protected:
// todo: write a setter and getter
boolean ib_use_windows_profile = false
constant int FAIL = -1
constant int SUCCESS = 1
3. Добавьте функцию, определенную так:
int = of_setprofilestring(string as_filename, string as_section, string as_key, string as_value)
Закодировано что-то вроде:
// If windows profile use PB standard function,
// otherwise use citrix user profile logic
If this.ib_use_windows_profile Then
Return SetProfileString(as_filename, as_section, as_key, as_value)
Else
// Pseudo-Code
//
// Does an entry exist in the database for this user, filename, section, key?
// Yes: Update the table with the new value
// No: Insert entry to the table with values
Return this.SUCCESS // success or fail
End If
4. Добавьте функцию, похожую на:
string = of_profilestring(string as_filename, string as_section, string as_key, string as_default)
Закодировано как:
// If windows profile use PB standard function,
// otherwise use citrix user profile logic
// if you don't have access to user info then
// add it to the argument list.
If this.ib_use_windows_profile Then
Return ProfileString(as_filename, as_section, as_key, as_default)
Else
// Pseudo-Code
//
// Does an entry exist in the database for this user, filename, section, key?
// Yes: Return the 'value' from DB
// No: Return the default value passed via parameter
Return as_default // or value from database
End If
5. Используйте новый невизуальный инструмент, вызовите ваш установщик, чтобы установить переменную экземпляра профиля Windows, а затем используйте ваши новые функции вместо стандартных функций профиля PB.