![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ситуация... Citrix and TPrinter поддержка "отображаемых" [D7, Win2k, WinXP]
sniknik © (2011-09-28 20:32:00)Программу выполняют в Citrix клиенте (что то типа RDP, удаленного рабочего стола), т.е. выполняется она в сессии на сервере, а печатать пытаются на принтере клиента...
Ну вот и проблема, вместо печати (пред просмотра) выдает ошибку - "не установлен принтер по умолчанию" что реально так (по присланному скриншоту) на сервере... но с клиента Citrix "отображает" (должен, клиент говорит другие печатают) в сессию локальные принтера, но TPrinter их похоже "в упор не видит"...
Кому нибудь знакомо? Вообще реально печатать на такие принтера?
Теоретически "проброс" ресурса на сервер должен сделать его аналогичным локальному (ну, виндовый то удаленный рабочий стол делает), и не нужно никаких WS... процедур с выцеплением из сессии. Т.е. принтеры программы под сессии затачивать не нужно. Или нужно?
В инете есть решения, к примеру настроить/подключить на сервере сетевой принтер, т.е. тот что локален для рабочей станции "расшарить", и подключить на сервере как удаленный...
Или обновить версию (типа это проблема какого то релиза, не слишком правильно "отображал", и уже исправили (версию где проблема не знаю и врядли могу узнать ;())
Или поставить виртуальный типа - http://www.printer-for-remote-desktop.com/printer-for-remote-desktop.html
и т.д. но клиент говорит проблема нашей программы т.к. "другие" (не знаю кто) печатают...
В общем основная проблема... невозможность "пощупать" глюк, клиент чем дальше тем больше кажется "не адекватным", не хочет проверять (ну например хотя бы установить "фиктивный" принтер на сервере чтобы пройти ошибку "не установлен" и посмотреть, что вообще в списке видится...). Нет "нам так не надо" типа их заставляют это навсегда оставлять...
В общем если кто пусть не в теме, но имеет возможность (Citrix) и желание затестить (завтра)... был бы благодарен.
oxffff (2011-10-01 14:37:00) [1]
> sniknik © (30.09.11 14:19) [27]
> > даю процентов 80-90
> 100% ... Пообщался с ЦТО-шником, ничего они там не настраивали.
>
>
>
Поздравляю, что с "трудным клиентом" удалось найти выход.
P.S. Главное, что в будущем такой клиент не вынудил подправить сам Citrix или драйвера принтера. :))
sniknik (2011-09-30 14:19:00) [2]> даю процентов 80-90
100% ... Пообщался с ЦТО-шником, ничего они там не настраивали.
sniknik (2011-09-30 13:54:00) [3]> Ответ на этот вопрос было бы здорово узнать.
> Есть ли возможность откатить правки и протестировать на изначальной версии вашего софта?
Откатить можно, протестировать нет ;(... но скорее всего (даю процентов 80-90) помогло исправление. Просто не верю, что клиент с настолько ламерскими описаниями ошибок, подходом ("логи? зачем вам я же вам говорю - не работает!"), мог и стал что-то там настраивать (при том что - "другие то работают!").
+
> выдает ошибку - "не установлен принтер по умолчанию" что реально так (по присланному скриншоту) на сервере...
Первоначальный скриншот, один из... (было несколько), с настроек принтеров (жаль без подписи, что это с сервера в проблемной сесии) не имеет дефаултного значка ни на одном из принтеров... и именно тут я сделал дополнение на использование первого в списке в этом случае перед эксептом...
Вот в "тегах" {My}
procedure TPrinter.SetToDefaultPrinter;
var
I: Integer;
ByteCnt, StructCnt: DWORD;
DefaultPrinter: array[0..1023] of Char;
Cur, Device: PChar;
PrinterInfo: PPrinterInfo5;
begin
ByteCnt := 0;
StructCnt := 0;
if not EnumPrinters(PRINTER_ENUM_DEFAULT, nil, 5, nil, 0, ByteCnt,
StructCnt) and (GetLastError <> ERROR_INSUFFICIENT_BUFFER) then
begin
// With no printers installed, Win95/98 fails above with "Invalid filename".
// NT succeeds and returns a StructCnt of zero.
if GetLastError = ERROR_INVALID_NAME then
RaiseError(SNoDefaultPrinter{My}+ ' (Win95/98)'{My})
else
RaiseLastOSError;
end;
PrinterInfo := AllocMem(ByteCnt);
try
EnumPrinters(PRINTER_ENUM_DEFAULT, nil, 5, PrinterInfo, ByteCnt, ByteCnt,
StructCnt);
if StructCnt > 0 then
Device := PrinterInfo.pPrinterName
else begin
GetProfileString('windows', 'device', '', DefaultPrinter,
SizeOf(DefaultPrinter) - 1);
Cur := DefaultPrinter;
Device := FetchStr(Cur);
end;
with Printers do {My}begin{My}
for I := 0 to Count-1 do
begin
if AnsiSameText(TPrinterDevice(Objects[I]).Device, Device) then
begin
with TPrinterDevice(Objects[I]) do
SetPrinter(PChar(Device), PChar(Driver), PChar(Port), 0);
Exit;
end;
end;
{My}
i f Count > 0 then begin
with TPrinterDevice(Objects[0]) do
SetPrinter(PChar(Device), PChar(Driver), PChar(Port), 0);
Exit;
end;
end;{My}
finally
FreeMem(PrinterInfo);
end;
RaiseError(SNoDefaultPrinter {My}+' (Up 2000)'{My});
end;
oxffff (2011-09-30 12:51:00) [4]
> Либо мое исправление помогло, либо Citrix нормально настроили.
Ответ на этот вопрос было бы здорово узнать.
Есть ли возможность откатить правки и протестировать на изначальной версии вашего софта?
P.S. Понимаю, что заработало и не хочется трогать и подставляться, тем не менее, есть ли возможность отправить пользователю начальную версию?
OW (2011-09-30 12:30:00) [5]Да понятно :)
просто очень хотел быть полезен, а чем - не знаю даже :))
sniknik (2011-09-30 12:11:00) [6]> какой нить exe, который выводит да/нет(что-то в мемо), потом скажу что вывелось(copy|paste)
А смысл? Если бы я знал, что нужно проверять (выводить в мемо), то проблем исправить не было бы.
Проблема всегда в том чтобы определить, что и где, по многозначительному "не работает".
Могу дать ссылку на реальную прогу. Но! Без условий - нет дефаултного, проверка лишена смысла. В нормальных ситуациях оно и так нормально работает, это подтверждать не нужно.
OW (2011-09-30 11:49:00) [7]у нас переход на другую отчетность, есть делов мало-мало, сорьки за тормознутость :)
OW (2011-09-30 11:48:00) [8]ну хорошо :)
да, я ничего не настраиваю, на то есть спец. люди :)
Но если хочешь, ради спорт.интереса, - дай свой пример, проверю
какой нить exe, который выводит да/нет(что-то в мемо), потом скажу что вывелось(copy|paste)
sniknik (2011-09-30 09:56:00) [9]Все. Ответили, печать у них заработала. Либо мое исправление помогло, либо Citrix нормально настроили.
Вопрос снимается.
sniknik (2011-09-30 09:34:00) [10]> Николай, я не пользуюсь TPrinter. Все печатаю из excel.
Но я то пользуюсь... выслал бы тебе свою. Проверка любой другой не актуальна.
> А Citrix настроили так
Настроили, а не настроил? Т.е. сам не можешь поменять? Тогда конечно ...
А узнать у своих "настройщиков" возможна ли ситуация с настроенными/проброшенными принтерами (они есть, я во вчерашней версии явный эксепт на сравнение их количества с нулем поставил... "до того", и "обидной" надписью на которую точно бы прореагировали ;), а они гады молчат до сих пор...), и при этом отсутствующим по дефаулту? (т.е. мой 2-ой домысл из [15])
Т.к. в этой ситуации в "принтерс" возбуждается эксепт, и именно это я исправил (пункт 4), поставил при отсутствии выбор первого в списке.
OW (2011-09-30 09:10:00) [11]
> Кстати, OW не проверишь? Если сможешь конечно у себя пункт
> 2 воспроизвести (убрать дефолтный)...
Николай, я не пользуюсь TPrinter. Все печатаю из excel.
А Citrix настроили так, что только принтер по умолчанию и пробрасывается.
т.е. после экспорта в excel виден только этот принтер, а если хотят сохранить файло - то только диск C: (NameComputer_C: так видится)
sniknik (2011-09-29 15:15:00) [12]> по умолчанию был не тот
Значит может и вообще не быть (т.е. мои "умопостроения" не лишены логики).
> Значит есть Админы.
У меня есть только клиент жалующийся начальству... ;(
oxffff (2011-09-29 15:13:00) [13]
> sniknik © (29.09.11 14:59) [15]
На бывшей работе было по 6 принтеров, все они туннелировались через citrix. И принтер по умолчанию нормально подтягивался.
Да были проблемы с принтерами в том числе и c дефолтным(по умолчанию был не тот), но ребята citrix Админы в итоге решили их.
Значит есть Админы.
sniknik (2011-09-29 14:59:00) [14]Вроде решилось... с утра версию отправил (полазил по модулю Printers посмотрел где могла бы быть ошибка...), молчат.
Что "надумал".
1 Скринот был неправильный, принтера там есть...
2 Настроен "проброс" только обычных принтеров (дефаултный не входит, а на сервере их вообще нет, как понял), т.е. ошибка примем верная. (не понимаю как винда может пропустить, она ж должна "назначить", но может это "заслуга" чисто Citrix-а)
3 TPrinter устанавливает дефаултный даже если его не просят... при коде например Printer.PrinterIndex:= 1; (в Get/SetPrinterIndex). Сначала дефаултный ставит после тот что просишь, если его нет то эксепт.
4 Решил правкой генофонда... ;(
Если решил конечно, т.к. все на интуиции/догадках, но пока молчат надежда есть. ;)
И кстати предлагал же установить хоть что то, лишь бы "пройти" на шаг дальше... судя по всему оно бы вообще все решило (первое обращение было бы к реальному, а дальше он не используется, беретс из настроек).
Блин, ну что за люди, им же делаешь (программа бесплатная), а они "да, да, мы все проверили, не работает..." а судя по всему даже не пытались.
Кстати, OW не проверишь? Если сможешь конечно у себя пункт 2 воспроизвести (убрать дефолтный)...
OW (2011-09-29 12:40:00) [15]+ к
админов надо трясти
такая же ситуация - Citrix, приложения, настроен "проброс' принтеров - все нормально.
Также и дисков и буферов обмена - тоже все ок
sniknik (2011-09-28 21:26:00) [16]Спасибо. Попробую еще клиента "по терзать".
(хотя сами виноваты, у нас есть нормальный режим "клиент-сервер" причем клиента не обязательно на пользовательские компы ставить, можно по ссылке запускать, т.е. никаких настроек послал "нужным людям" в письме ссылку и все, но нет - "мы хотим так, у нас всё так работает...".)
oxffff (2011-09-28 21:18:00) [17]Да и скорее всего должны быть настройки на пуле Citrix машин(у нас их было много). Поскольку бывали, что на одних печатает на других нет.
Так что может на одних печатать, а на других нет.
Это к Citrix админу.
P.S. здесь возможно в качестве рекомендации запомнить машину citrix на которой все хоккей как говорит пользователь, и тестить свое приложение именно в ней, в трее citrix клиента есть значок, щелкнуть по нему, он покажет имя удаленной машины.
sniknik (2011-09-28 21:15:00) [18]> Я печатал на дефолтный принтер.
У меня как раз говорит про его отсутствие... что в винде невозможно (она сама выдает "лычку" первому попавшемуся если удалить такой) если есть хотя бы один.
oxffff (2011-09-28 21:12:00) [19]
> sniknik © (28.09.11 21:05) [8]
> > драйвера принтера не поддерживаемые Citrix
> А ошибка не была бы другой? Или он если не поддерживает
> то просто игнорирует? И получается что там пусто.
Я к сожалению насчет ошибок не знаю. Могу сказать, что принтер с кривыми драйверами цеплялся, то печатал не корректно(PCL 5 или PCL 6)
Я печатал на дефолтный принтер.
oxffff (2011-09-28 21:07:00) [20]
> Хотя... "другие" то печатают.
Если это сказал пользователь, то лучше не верить ему на слово.
Поскольку принтер они могли подцепить минуя "citrix туннелирование" (насколько помню он так работает), а напрямую через шару
А печать на дефолтный принтер она и в Африке печать на дефолтный принтер.