Проблема с созданием профиля в приложении 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.

Другие вопросы по тегам