Автор: alex82 29.3.2009, 23:34
Такой вот глюк:
После установки PtokaX как system service перестают нормально работать скрипты - некоторые вовсе не работают, некоторые работают, но не совсем полноценно. Если удалить службу, и запустить птоку как консольное приложение, всё работает нормально.
Кто-нибудь с таким сталкивался?
PS. Службу устанавливал стандартным способом
Код
PtokaX.exe -i ptokax
__________________________________________________
Добавлено спустя некоторое времяКод
1 23:00:39 PtokaX_c.exe:3552 CREATE C:\WINDOWS\system32\data\support.tbl
Нет слов.
Точнее есть, но все матерные. Это ж надо додуматься, блин, сохранять данные скриптов в system32
А вот ещё один шедевр:
Код
1 23:18:42 PtokaX_c.exe:7076 CREATE C:\Documents and Settings\2\data\support.tbl PATH NOT FOUND
В этом случае птока была запущена при помощи функции ShellExecute c атрибутом SW_HIDE.
Видимо понятие "относительные пути" в новой птоке отсутствует, а есть только абсолютные, и плавающие.
* мысленно пинает PPK ногой под зад *Тема исчерпана, вопросов больше не имею.
Автор: Setuper 29.3.2009, 23:39
Я так полагаю, что всё будет работать, если в скриптах писать так: Core.GetPtokaXPath() ?
Я правильно понял?
Автор: alex82 30.3.2009, 0:04
Угу.
И если весь скрипт засунуть внутрь OnStartup()
Автор: Setuper 30.3.2009, 0:09
Ну не весь скрипт, а только те его части, которые требуют чтобы глобальные таблицы были определены.
В этом то и есть вся сила абсолютных путей - они всегда универсальны.
Автор: alex82 30.3.2009, 0:23
Цитата(Setuper @ 30.3.2009, 0:09)
Ну не весь скрипт, а только те его части, которые требуют чтобы глобальные таблицы были определены.
В этом то и есть вся сила абсолютных путей - они всегда универсальны.
Знаешь, я ничего не имею против абсолютных путей.
Вот только вынуть бы функцию GetPtokaXPath() из таблицы Core.
* ещё раз мысленно пинает PPK ногой под зад *
Автор: Setuper 30.3.2009, 0:36
Да уж... Это нововведение (инициализировать таблицу Core только при запущенном хабе) появилось в API2, ведь в API1 таблица frmHub инициализировалась даже при остановленном хабе, и метод frmHub:GetPtokaXLocation() прекрасно работал.
Хотя я догадываюсь с чем это всё связано... Видимо это связано с возможностью смены почти всех настроек хаба без его остановки
Автор: alex82 30.3.2009, 0:54
Интересная мысля:
Код
path = debug.getinfo(1).source:match("^@(.+\\).-$"):gsub("\\","/")
Что ты об этом думаешь?
Автор: Setuper 30.3.2009, 1:14
Отличная вещь! Это универсальный метод определения абсолютного пути. Он даже не зависит от хаба и отслеживает путь не до файла ptokax.exe, а до самого запущенного скрипта
Хотя надо протестить на линуксе. Дума, что на линуксе надо писать так:
Код
path = debug.getinfo(1).source:match("^@(.+/).-$")
Поэтому самым универсальным, наверное, будет такой код:
Код
path = debug.getinfo(1).source:match("^@(.+[/\\]).-$"):gsub('\\','/')
В противном случае скрипты под линуксом будут работать неправильно