Allora, lo script a cui mi riferivo io è molto più basilare di un javascript in quanto utilizza la linea di comando di Windows (per intenderci, il DOS). Da questo derivano due conseguenze: la semplicità di programmazione e comprensione, la pesantezza nel caso di un grande numero di files (come avevo già anticipato sopra).
Ad ogni modo proseguo perché comunque è una soluzione divertente da applicare.
Consideriamo la tua pendrive e diamogli una lettera di root
P:\. Questo in realtà non ci servirà ai fini dello script (che altrimenti funzionerebbe solo se eseguito in quei sistemi per i quali è vera la regola che
root pendrive==P:\).
Ora, giusto per schematizzare le cose, dovremo avere questa situazione.
root P:\
<DIR>Installers
|-InstA.exe
|-InstB.exe
|-InstC.exe
autorun.inf
autorun.bat
autorun.ico
Ovvero la "cartella principale" con all'interno una sottocartella, contenente gli eseguibili InstA, InstB e InstC, il file informazione per l'autorun e lo script. A piacimento possiamo anche aggiungere autorun.ico da assegnare alla nostra pendrive.
Detto questo, il file autorun.inf può contenere le seguenti stringhe:
[AutoRun]
ICON=cartella\sottocartella\nomeicona.ico Specifica l'icona e il suo percorso
OPEN=nomeeseguibile.exe Specifica l'eseguibile da avviare
SHELLEXECUTE=nomedocumento.estensione Indica un eventuale file da aprire
LABEL=etichetta Il nome da attribuire alla pendrive
Non tutte però sono utili alla nostra situazione. Il nostro autorun.inf può limitarsi a contenere queste informazioni:
[AutoRun]
ICON=.\autorun.ico
OPEN=.\autorun.bat
LABEL=Installers
In questo modo all'inserimento della chiavetta, denominata "
Installers" e con icona "
autorun.ico", verrà eseguito "
autorun.bat".
Anticipo un concetto che ci sarà utile a breve nello script. Nel linguaggio DOS "
." fa riferimento alla cartella di lavoro corrente. Questo ci permette di evitare l'utilizzo della lettera assegnata dal sistema nel percorso di quello che richiameremo nello script.
Praticamente: anziché dover scrivere "P:\Installers\InstB.exe" potremo scrivere "
.\Installers\InstB.exe", e la stringa sarà valida in qualunque caso.
Passiamo quindi allo script vero e proprio, che ora scriverò in via esemplificativa affinché possa esserne compreso il funzionamento:
@ECHO OFF Questo comando impone che vengano nascoste tutte le stringhe tranne quelle marcate con "ECHO"
Title Autorun Specifica il titolo della finestra del prompt
:Start La denominazione :*** indica un paragrafo richiamabile dello script
CLS Pulisce il buffer del prompt
ECHO Selezionare un'opzione ECHO determina ciò che viene mostrato a schermo. Ciò che viene scritto dopo questo comando viene visualizzato
ECHO. ECHO. significa riga vuota, "a capo"
ECHO A: Programma A
ECHO B: Programma B
ECHO C: Programma C
ECHO 0: Esci
ECHO.
ECHO Digita un numero seguito da Invio
ECHO.
SET Choice= Questa stringa indica l'inserimento di una variabile denominata "Choice"
SET /P Choice="" la quale viene definita qui come [StringaPrompt], ovvero definita dall'utente ad ogni esecuzione dello script
IF '%Choice%'=='A' GOTO InstA In queste stringhe sono presenti le istruzioni valore variabile-->azione. L'azione viene specificata nei paragrafi
IF '%Choice%'=='B' GOTO InstB
IF '%Choice%'=='C' GOTO InstC
IF '%Choice%'=='0' GOTO Exit
ECHO "%Choice%" parametro non valido Si stabilisce che qualsiasi variabile non presenti una azione nello script viene definita non valida
ECHO Prova ancora
GOTO Start Si torna all'inizio
:InstA Inizio di paragrafo
START ".\Installers\InstA.exe" Viene avviato l'eseguibile ProgA dalla sottocartella "Installers"
GOTO Start Si torna all'inizio
:InstB
START ".\Installers\InstB.exe"
GOTO Start
:InstC
START ".\Installers\InstC.exe"
GOTO Start
:Exit
EXIT
Eccoci arrivati. Questo è lo scheletro del nostro script, estremamente semplice. Ecco la linea di azione:
Richiesta-->
definizione variabili-->
inserimento variabile-->
esecuzione programma--><--
beginning
Ora non resta che definire tante variabili quanti sono gli eseguibili nella sottocartella Installers, ed assegnare a ognuna di esse un paragrafo con le appropriate istruzioni.
Puoi aggiungere istruzioni di qualunque tipo, ad esempio far determinare allo script l'architettura del sistema corrente (x86 o x64) ed avviare l'eseguibile appropriato, insomma tutto quello che vuoi.
È necessario però ricordare che, almeno secondo la mia esperienza, più si complica lo script meno è probabile che funzioni. Se anche le sue parti, i suoi paragrafi, sono compilati correttamente, nell'insieme qualcosa stona sempre. Primo fra tutti, DOS non è ottimizzato come possono esserlo VB o JS, di fatto linguaggi più moderni.
Spero che questo post si riveli utile; per qualsiasi dubbio o chiarimento sono a disposizione.