Что нового

Запуск не компилированного скрипта в системе без установленного интерпретатора

ivsatel

Продвинутый
Сообщения
319
Репутация
84
Возможно ли запустить не компилированный скрипт в системе без установленного в ней интерпретатора.
Запуск хочу осуществлять из компилированного скрипта. И как быть с зависимостями если запуск возможен?
Справку читал http://autoit-script.ru/autoit3_docs/intro/running.htm, но хотелось бы услышать из Вашего личного опыта.
Все это для того, что-бы не компилить отдельный модуль и не вставлять его в главный файл. Думаю сэкономить размер.
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
ivsatel [?]
Возможно ли запустить не компилированный скрипт в системе без установленного в ней интерпретатора.
Нельзя, нужен будет интерпретатор.
Интерпретатором может быть любой другой AutoIT скрипт.
Что бы запустить на другой машине нужно минимум:
1) Скопмилировать свой проект в формате .a3x
2) Запустить его через AutoIt3.exe или через любой другой скомпилированный скрипт.
 
Автор
I

ivsatel

Продвинутый
Сообщения
319
Репутация
84
inververs
inververs сказал(а):
Интерпретатором может быть любой другой AutoIT скрипт.
Я же говорил. Запуск хочу осуществлять из компилированного скрипта.
Т.е. есть script.exe в нем осуществляю запуск script.au3.
Но как быть с зависимостями в script.au3 ? Их можно включать в script.exe или, что-бы они лежали рядом с script.au3 ?
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
ivsatel [?]
Но как быть с зависимостями в script.au3 ?
С какими зависимостями? Если ты говоришь про сторонние include, то я же написал что:

inververs [?]
1) Скопмилировать свой проект в формате .a3x
Проект тогда это скрипт script.au3
Скомпилировать в формат a3x - это не значит переименовать расширение. Нужно иммено через Autoit3Wrapper выбрать расширение a3x и нажать скомпилировать
 
Автор
I

ivsatel

Продвинутый
Сообщения
319
Репутация
84
inververs
А в этом случае для выполнения каждого скрипта будет инициализирован отдельный интерпретатор или первый скрипт будет ждать завершения второго.
Т.е. своего рода много поточность таким образом будет реализована?
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
ivsatel [?]
А в этом случае для выполнения каждого скрипта будет инициализирован отдельный интерпретатор или первый скрипт будет ждать завершения второго.
Нет не будет, конечно если вы не будете их запускать через runwait :smile:
Т.е. своего рода много поточность таким образом будет реализована?
Нет, ничего такого - тут будет просто запуск одноврменно несколько копий приложений. Со всеми вытекающими проблемами организации обмена данными между разными процессами.
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
самый главный момент это наличие всех включаемых функций. если только нативные функции, то достаточно интерпретатора, если сложный скрипт, то в нем нужно будет дописать все включаемые функции из udf.
лучше использовать готовые экзе файлы, которые включены в основной скрипт. или компилировать по ходу выполнения http://autoit-script.ru/index.php?topic=8160.0
 
Автор
I

ivsatel

Продвинутый
Сообщения
319
Репутация
84
joiner
joiner сказал(а):
если сложный скрипт, то в нем нужно будет дописать все включаемые функции из udf
Я правильно понял, что "<GdiPlus.au3>" в script.a3x нужно будет прописывать полностью, ну или те функции которые затрагиваются. В общем "#include" не подходит?
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Формат a3x - это скомпилированный скрипт, но к нему не добавлен интерпретатор. Значит все что вы повключали в скрипт - окажется там.


Добавлено:
Сообщение автоматически объединено:

Кстати, a3x тоже можно включать через #include и вызывать от туда любые функции.

Это может пригодится, например, если хочется скрыть исходный код, но оставить возможность им пользоваться.
 

Astel064

Помог мой пост, ставь +!
Сообщения
276
Репутация
51
inververs [?]
Это может пригодится, например, если хочется скрыть исходный код, но оставить возможность им пользоваться.

Вот тут уже я не понял, каким образом Вы скроете так исходный код?
 
Автор
I

ivsatel

Продвинутый
Сообщения
319
Репутация
84
inververs [?]
Кстати, a3x тоже можно включать через #include и вызывать от туда любые функции.
Тогда точно не будет моей "псевдо многопоточности" :smile:
Ведь включенные функции не смогут быть отдельными процессами.
Или есть возможность такого кода:
Код:
#include <script.a3x>

FileCopy('script.a3x', @TempDir&'\script.a3x')
Run(@AutoItExe & ' /ErrorStdOut /AutoIt3ExecuteScript '&@TempDir&'\script.a3x')
 
Верх