Сейчас на форуме: (+2 невидимых)

 eXeL@B —› Оффтоп —› Под ThinApp не запускается lnk с ShellExecute под Windows 7...
Посл.ответ Сообщение


Ранг: 450.3 (мудрец), 13thx
Активность: 0.20
Статус: Участник

Создано: 29 октября 2010 16:42 · Поправил: ToBad
· Личное сообщение · #1

Собственно проблема существует только в готовой сборке и только на семёрке. В моей XP всё нормально.
Делаю так: ShellExecute(0, 'open', 'c:\far\far.lnk', '', '', SW_SHOW);
Всё тоже самое не в сборке работает.
Стоит заменить far.lnk на far.exe - в сборке работает.
Другими словами именно lnk и именно собранный файл. Окно начинает открываться, моргает и закрывается...
Как посоветуете решить проблему? Хочется запускать именно lnk так как там изменены цвета.
ThinApp 4.6.0-287958

p.s. Пока писал текст удалось проверить на ещё одной XP - не работает как на семёрке...



Ранг: 189.9 (ветеран), 334thx
Активность: 0.30
Статус: Участник

Создано: 29 октября 2010 17:54
· Личное сообщение · #2

Может с ассоциациями стоит что-то сделать? Хотя не уверен что понял.




Ранг: 450.3 (мудрец), 13thx
Активность: 0.20
Статус: Участник

Создано: 29 октября 2010 18:15
· Личное сообщение · #3

NikolayD пишет:
Может с ассоциациями стоит что-то сделать? Хотя не уверен что понял.


Не, если без упаковки в портейбл версию, то запускает.
То есть ShellExecute не умеет запускать lnk из thinapp сборки. Попытка происходит ибо окно появляется на доли секунды...



Ранг: 189.9 (ветеран), 334thx
Активность: 0.30
Статус: Участник

Создано: 29 октября 2010 18:26
· Личное сообщение · #4

А если lnk отдельно держать или извлекать и потом запускать?




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 29 октября 2010 22:03
· Личное сообщение · #5

В саппорт ThinApp, не?




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 30 октября 2010 07:52
· Личное сообщение · #6

Может потому что директория не указана?

Code:
  1. HINSTANCE ShellExecute(          HWND hwnd,
  2.     LPCTSTR lpOperation,
  3.     LPCTSTR lpFile,
  4.     LPCTSTR lpParameters,
  5.     LPCTSTR lpDirectory, <-- вот тут
  6.     INT nShowCmd
  7. );


-----
Yann Tiersen best and do not fuck





Ранг: 107.3 (ветеран), 5thx
Активность: 0.20.04
Статус: Участник

Создано: 30 октября 2010 09:22
· Личное сообщение · #7

возможно скажу глупость... lnk - насколько я понял это ярлык.
в ярлыке ведь указывается путь запуска на диске, а т.к. упаковано в thinapp, то там путь ведь другой будет...




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 30 октября 2010 10:08
· Личное сообщение · #8

Magister Yoda thinapp эмулирует пути. И другой он там не будет, в этом и фишка виртуализации. Другое дело что он может не перехватить апи при использовании ярлыка.

-----
Yann Tiersen best and do not fuck





Ранг: 450.3 (мудрец), 13thx
Активность: 0.20
Статус: Участник

Создано: 30 октября 2010 12:16 · Поправил: ToBad
· Личное сообщение · #9

Archer пишет:
В саппорт ThinApp, не?


Ну это на инглише нужно, а я как видишь не совсем понятно объясняю даже на русском...

NikolayD пишет:
А если lnk отдельно держать или извлекать и потом запускать?


А что это даст?


PE_Kill пишет:
Может потому что директория не указана?


Пробовал по разному. Окошко запускаемого приложения начинает появляться и потом закрывается...

PE_Kill пишет:
Другое дело что он может не перехватить апи при использовании ярлыка.


Под XP та же сборка перехватывает.


Magister Yoda пишет:
упаковано в thinapp, то там путь ведь другой будет...


Если командную строку запускать, то запускаемое приложение в системе как-бы присутствует на месте куда я указал.

p.s. Возможно я что-то упускаю в самом ThinApp. Сегодня попробую сделать сборку другой версией, на семёрке. Может что получится...




Ранг: 450.3 (мудрец), 13thx
Активность: 0.20
Статус: Участник

Создано: 30 октября 2010 15:43
· Личное сообщение · #10

Жуткий геморрой получается. В общем пробовал разные варианты, включая копирование ярлыка. Работает только если сделать инсталлятор который распаковавшись запускает lnk. ShellExecute делаю для инсталлятора. Он гадит всё на диск C и сам запускает. Тогда проблем нет, но криво это как-то, плюс остаётся мусор.
Всё чего пытаюсь добиться - это запуска фара с определёнными цветами. В ярлыке как и в ветке HKEY_CURRENT_USER\Console\ColorTable... можно задавать цвета, но в семёрке это распространяется только на запущенные вне песочницы консольные приложения. Фар на семёрке в песочнице не использует успешно прописанные цвета в Console\ColorTable, а с ярлыка его запустить не получается. Отсюда другой вопрос, а как ещё можно запустить консольный Far.exe передав установки цвета? Как вообще запускать консольные приложения указав что-нибудь из множества параметров, шрифт, размер окна и т.д.?




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 31 октября 2010 16:23
· Личное сообщение · #11

bat файл, vb скрипт, накодить простенький exe который запустит другой exe с какими угодно параметрами.

Тот же самый:
Code:
  1.    1. HINSTANCE ShellExecute(          HWND hwnd,
  2.    2.     LPCTSTR lpOperation,
  3.    3.     LPCTSTR lpFile,
  4.    4.     LPCTSTR lpParameters, <-- поддерживает параметры
  5.    5.     LPCTSTR lpDirectory,
  6.    6.     INT nShowCmd
  7.    7. );


-----
Yann Tiersen best and do not fuck





Ранг: 450.3 (мудрец), 13thx
Активность: 0.20
Статус: Участник

Создано: 01 ноября 2010 15:08
· Личное сообщение · #12

PE_Kill пишет:
bat файл, vb скрипт, накодить простенький exe который запустит другой exe с какими угодно параметрами.


Примерно так и сделал. Фар вместе с настройками цветов запихнул в инсталлятор с запуском ярлыка с уже реального диска С. Соответственно Console\ColorTable прописывается в реальный реестр. Из приложения в песочнице запускается этот инсталлятор и гадит в реальную систему, плюс запускает фар сам. Таким образом удалось победить большинство проблем, и с виду всё получилось, но в ходе работы обнаружилось, что этот фар хоть и запущен инсталлятром с реального диска, функционал его ограничен. Например запустив с этого фара инсталляцию любой программы которая пытается установить сервис или драйвер - получаю ошибки... Наверное проблема в методе изоляции...
Но теперь уже глядя на все вытекающие проблемы и сложности - задаю себе вопрос, а зачем я вообще решил использовать thinapp для этой конкретной задачи когда всё можно сделать проще в виде обычного инсталлятора с автозапуском после распаковки.


 eXeL@B —› Оффтоп —› Под ThinApp не запускается lnk с ShellExecute под Windows 7...

У вас должно быть 20 пунктов ранга, чтобы оставлять сообщения в этом подфоруме, но у вас только 0

   Для печати Для печати