Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: Ondřej Novák 30. 11. 2011, 15:08:13

Název: Skriptovací jazyk pro instalace pod Windows
Přispěvatel: Ondřej Novák 30. 11. 2011, 15:08:13
Zdravím.

Ve vlastním aplikačním systému složeného z komponent potřebuju nahradit současný skriptovací systém postavený na kombinaci NSIS + BATCH, něčím lepším. Nevíte, někdo o něčem prosím. Podmínkou je jednoduchý binding do C/C++.

Budu v tom psát instalační skripty. Doposud jsem uvažoval o nějaké variantě Bashe, nebo i javascriptu, kdyby binding do C nebyl v MSWin tak komplikovaný. Mezi běžné úlohy - kopírování souborů, zápis do registrů, zápis do konfigů (ini), proměnné a environment. Nepotřebuju UI.

Dík
Název: Re:Skriptovací jazyk pro instalace pod Windows
Přispěvatel: D.A. Tiger 30. 11. 2011, 17:16:16
Pomohl by třeba C-Shell (csh) http://www.eng.hawaii.edu/Tutor/csh.html  nebo jeho modernější varianta (tcsh) http://www.tcsh.org/Welcome . Oba by měli mít syntaxi založenou na C, takže vytvořit nějaký binding minimálně do C by nemusel být teoreticky až takový problém (jestli už neexistuje, ale to nevím)....
Název: Re:Skriptovací jazyk pro instalace pod Windows
Přispěvatel: D.A. Tiger 30. 11. 2011, 17:22:32
Napadla mě ještě jiná věc. nepomohlo by třeba udělat jádro instalačního systému v C/C++ s API v C a pro skriptovací účely udělat nad API wrapper např. v jazyce LUA? Pro skript použijete LUA a pro binární formu přímo knhovnu.... také by to možná šlo.
Název: Re:Skriptovací jazyk pro instalace pod Windows
Přispěvatel: Sten 30. 11. 2011, 17:23:05
A co rovnou Python? CPython i Boost.Python jsou výborné bindingy :-)

Na instalační systém by asi stačila Lua.
Název: Re:Skriptovací jazyk pro instalace pod Windows
Přispěvatel: Logik 30. 11. 2011, 17:37:29
A co microsoftí VBScript. Jazyk je to sice blbej, ale přesně na tydle věci dělanej. A binding složitě nevypadá:
http://www.codeproject.com/KB/COM/scriptdemo.aspx
Opačná strana bindingu bude asi horší, to se asi dělá přes ty úžasní msoftí interfacy, ale taky to určitě půjde nějak hezky zabalit.
Název: Re:Skriptovací jazyk pro instalace pod Windows
Přispěvatel: Ondřej Novák 30. 11. 2011, 19:28:54
O pythonu jsem uvažoval, ale mám k němu trochu odpor, protože v něm občas musím něco udělat a považuju to za utrpení :-)

Pak mne napadl PHP, ale ani tam psát extensions není žádný med.

VBScript bude asi na podobné úrovni jak JS od MS. Předpokládám, že k vyrobení objektu musím vytvoři objekt který implementuje IDispatch, což samo osobně není nic easy, protože už takové tři speciální objekty udělal v jiném projektu a navazující JS programátor byl z těch objektů dost vedle, protože se třeba nedaly vydumpovat a vůbec se chovaly divně.

Na tu LUA se podívám, už jsem o tom četl.
Název: Re:Skriptovací jazyk pro instalace pod Windows
Přispěvatel: lacod 30. 11. 2011, 20:56:29
Skus PowerShell. Volania na .NET kniznice idu bez probelemov. Volania unmanaged funkcii je mozne cez wrapper . Tu je priklad niecoho podobneho  http://stackoverflow.com/questions/142452/how-do-i-call-a-win32-function-in-powershell-1-0-using-p-invoke .
Název: Re:Skriptovací jazyk pro instalace pod Windows
Přispěvatel: pozortucnak_ 02. 12. 2011, 18:05:43
A co javascript? Myslim ýe se to jmenuje windows scripting host - jde tam uz výše zmíněný vbscript a nebo javascript - co jsem koukal tak by to mohlo být dost dobře použitelné...
Název: REXX: Skriptovací jazyk pro instalace pod Windows
Přispěvatel: mikrom 02. 12. 2011, 21:34:35
Na rozsirenie windows batch scriptov je vhodny REXX:
http://en.wikipedia.org/wiki/REXX
http://www.oocities.org/zabrodskyvlada/cz_rexxpage.html
http://www.ibm.com/developerworks/linux/library/l-rexx/index.html
http://www.edm2.com/0303/rexx.html
Název: Re:Skriptovací jazyk pro instalace pod Windows
Přispěvatel: pozortucnak_ 03. 12. 2011, 06:40:01
http://en.wikipedia.org/wiki/Windows_Script_Host
http://technet.microsoft.com/en-us/library/ee156607.aspx
Název: Re:Skriptovací jazyk pro instalace pod Windows
Přispěvatel: andrej 03. 12. 2011, 17:26:23
Odporucam LUA-u alebo potom nejaky ten WSH, ale s tym nemam skusenosti. LUA je malicka, nenarocna, rychla, binding je s niecim ako tolua++ extremne jednoduchy (az sa to rozbeha, ale zvladol som to dokonca aj ja :) )...prakticky len upravis hlavicky a pustis tolua++ ktory ti vygeneruje cpp subor a mozes si v skripte vytvarat vlastne objekty, alebo k nim pristupovat) a su k tomu libky cez ktore sa da jednoducho pouzivat COM objeky (teda skriptovat office a podobne srandy).
Syntax je podobna pascalu, takze za 1-2 dni si v tom ako doma. Navyse sa da zdrojak skompilovat do bytecodu, nieco ako ma python.
Pouziva sa ako skriptovaci jazyk napr. vo wiresharku, ja sa sem tam s nou hram, ale paci sa mi stale viac a viac. Jedine co mi na nej chyba je preemptivny multithreading, ale zevraj original LUA interpreter je na to predpripraveny, staci tam zmenit prazdne #define na "mutexy", ale neskusal som to.
Název: Re:Skriptovací jazyk pro instalace pod Windows
Přispěvatel: Ondřej Novák 03. 12. 2011, 19:24:40
Chtěl bych poděkovat za návrhy. Zatím to vypadá, že bych použíl MS Script Host, protože mám v záloze nějaké adaptery pro vlastní objekty v C++. Takže si napíšu objekt Shell, který bude umět kopírovat soubory, mazat, přesouvat, a zapisovat do registru. To je oficiální řešení pro mého zadavatele. Výhodou je také to, že mám v týmu javascriptáře, kterému to pak mohu dát na starost.

Lua je zajímavá, ale syntaxe mi silně nevyhovuje. Připomíná mi to Basic.

Nicméně téma skriptovacích jazyků a jejich embedování do aplikací a zejména do C++ mne zaujal. Hlavně mne zaujalo, že jsem nenašel žádný čistě na C++ implementovaný skriptovací jazyk. Asi nejvíc jsem uvažoval o Google V8, ale odradily mě prerekvizity nutné jenom k přeložení celého jejich systému. Ve zkratce kanón na vrabce. Z jazyků, které jsou dnes lehce obsolete a které bych asi nejvíc využil je pro vás asi neznámý OFP script, což byl skriptovací jazyk pro hru Operation Flashpoint. Jeho rozšiřovatelnost byla velice jednoduchá, ale měl spoustu limitací.

Téma mě zaujalo natolik, že soukromě ve svém volném čase zkouším napsat něco mezi OFP scriptem a Javascriptem se snadným bindováním do C++. Vlastně to bude celé v C++, rozšířitelnost bude řešena děděním nějakého společného rozhraní a konstrukce objektů, které toto rozhraní implementují. Pokud budou výsledky, tak se o to podělím.
Název: Re:Skriptovací jazyk pro instalace pod Windows
Přispěvatel: Ondřej Novák 03. 12. 2011, 19:31:07
Poznámka: OFP Script - označovaný jako SQF, našel jsem o nějaký dokument o tom

http://seit.unsw.adfa.edu.au/coursework/ZEIT2305/Resources/SQF_Tutorial/basic_sqf.HTML

Jinak já ho znám zevnitř :-D. Bohužel z určitých právních důvodů ho nemohu použít.
Název: Re:Skriptovací jazyk pro instalace pod Windows
Přispěvatel: Inkvizitor 03. 12. 2011, 19:59:32
Jenom pro zajímavost - proč je pro Tebe práce v Pythonu utrpení? Pokud jde o povinné odsazování, s rozumným editorem to není problém. Na rozdíl od různých obskurních jazyků typu SQF je Python hodně univerzální nástroj.
Název: Re:Skriptovací jazyk pro instalace pod Windows
Přispěvatel: pozortucnak_ 03. 12. 2011, 21:12:24
Jenom pro inspiraci...  ;D

http://code.google.com/p/cppscript/
 (http://code.google.com/p/cppscript/)
http://en.wikipedia.org/wiki/Io_(programming_language)
 (http://en.wikipedia.org/wiki/Io_(programming_language))
http://nekovm.org/index
 (http://nekovm.org/index)
http://codeplea.com/game-scripting-languages (http://codeplea.com/game-scripting-languages)
Název: Re:Skriptovací jazyk pro instalace pod Windows
Přispěvatel: pozortucnak_ 03. 12. 2011, 21:16:50
Třeba takový http://www.angelcode.com/angelscript/ (http://www.angelcode.com/angelscript/) vůbec nevypadá špatně...
Název: Re:Skriptovací jazyk pro instalace pod Windows
Přispěvatel: Ondřej Novák 03. 12. 2011, 21:34:52
Jenom pro zajímavost - proč je pro Tebe práce v Pythonu utrpení? Pokud jde o povinné odsazování, s rozumným editorem to není problém. Na rozdíl od různých obskurních jazyků typu SQF je Python hodně univerzální nástroj.

No dělá mi problém právě to odsazování. Kolikrát nevím, co už mohu napsat na další řádek a co ne. Když chci něco vrazit do bloku, tak v C++ před a za napíšu závorky. V Pythonu to musím odsadit a protože ne kadžý editor zvládne odsazování bloků (a některý nezvládne pořádně ani bloky), pak je to problém. Někdy v C++ odsazuji i jinak, než o standardních 4 znaky. Například víceřádkový case odsazuju všechny řádky za dvojtečku. Prostě úprava kódu pro lepší čitelnost nemá mít vliv na interpretaci toho kódu.

A druhý důvod je, že ani psát extension není žádný med, i kdyzž na druhou stranu, boost tomu hodně pomůže.

Další problém pythonu vidím v tom, že verze od verze je tenhle jazyk nekompatibilní. A stává se z toho kolos.
Název: Re:Skriptovací jazyk pro instalace pod Windows
Přispěvatel: Ondřej Novák 03. 12. 2011, 21:42:52
Na rozdíl od různých obskurních jazyků typu SQF je Python hodně univerzální nástroj.

SQF byl taky univerzální, protože jsem do něho napsal celou řádku zajímavých rozšíření od práce se soubory až po práce s okny a UI a časem i různí fandové byli schopni v tom napsat utilitu s grafickým ovládáním (dialogem) jinak nepolíbeni Windows API. SQF má jednu báječnou vlastnost a to tu, že blok {...} se dá uložit do proměnné a pak kdykoliv vyvolat na jiném místě. Výborná záležitost pro lamba výrazy. Právě třeba v tom UIčku se to hodně používalo, kdy člověk přímo k UI prvku navěsil event tak, že tam hned vyšvihl i kód, který se má vykonat ... a on se vykonal, když nastala daná událost ... i klidně opakovaně. Ne každý jazyk tohle jednoduše umí. Líbil se mi i způsob, jak jednoduše se to deklarovalo.
Název: Re:Skriptovací jazyk pro instalace pod Windows
Přispěvatel: Inkvizitor 04. 12. 2011, 00:52:58
No dělá mi problém právě to odsazování. Kolikrát nevím, co už mohu napsat na další řádek a co ne. Když chci něco vrazit do bloku, tak v C++ před a za napíšu závorky. V Pythonu to musím odsadit a protože ne kadžý editor zvládne odsazování bloků (a některý nezvládne pořádně ani bloky), pak je to problém. Někdy v C++ odsazuji i jinak, než o standardních 4 znaky. Například víceřádkový case odsazuju všechny řádky za dvojtečku. Prostě úprava kódu pro lepší čitelnost nemá mít vliv na interpretaci toho kódu.

V Pythonu není nutno odsazovat pokaždé o 4 znaky, ikdyž se to doporučuje. Case každopádně nemá, takže tam problém odpadá.  ;)

Citace
A druhý důvod je, že ani psát extension není žádný med, i kdyzž na druhou stranu, boost tomu hodně pomůže.

Python má několik alternativních způsobů, jak psát výpočetně kritická místa - od SWIGu přes Pyrex až po inline kód třeba přes weave (http://www.scipy.org/PerformancePython).

Citace
Další problém pythonu vidím v tom, že verze od verze je tenhle jazyk nekompatibilní. A stává se z toho kolos.

Samozřejmě nevím, jaké problémy jsi přesně řešil, ale já jsem za X let, co mě Python živí, na zásadní nekompatibilitu narazil až u verze 3, která ještě pár let bude asi okrajová. Tenhle argument samozřejmě beru, ale čekal jsem spíš, že budeš nadávat na syntaxi a výrazové možnosti Pythonu.
Název: Re:Skriptovací jazyk pro instalace pod Windows
Přispěvatel: Inkvizitor 04. 12. 2011, 00:59:10
Co se týče univerzálnosti Pythonu, měl jsem spíše na mysli knihovny a frameworky. Mně osobně by se líbilo, kdyby Python uměl některé věci (třeba volitelné deklarace typů, tail call a další vlastnosti ze světa FP), ale z pragmatického hlediska mi přijde, že se v něm problémy řeší velice rychle a pohodlně. Tedy alespoň do určité velikosti projektu, pak  už se ten poměr mezi výhodami a nevýhodami IMO zhoršuje.
Název: Re:Skriptovací jazyk pro instalace pod Windows
Přispěvatel: mikrom 04. 12. 2011, 10:31:07
Co sa tyka WSH a jazykov VBscript a Jscript, tak niektore funkcie su dostupne len prostrednictvom VBscriptu - napriklad InputBox.
Vyhodou je, ze v jednom WSH-skripte sa daju kombinovat viacere jazyky, ktore WSH podporuje.