ENG2ITA Community > Unattended per Windows Vista/7/8/10

Installazione sequenziale programmi con file bat Di: DMD

Mi sono cimentato in uno script semplice semplice ma migliorabile,  se qualcuno è intenzionato a farlo ben venga.
I vari software devono essere già in forma silente.
Questo è lo script iniziale, la variabile MYR (l'ho battezzata MY Route) è il percorso che va sostituito con quello personalizzato che risiede nella penna USB o altro supporto (ormai dubito che vengano usati i CD/DVD dato il continuo aggiornamento dei programmi)
In cui risiede la cartella "Lancio_sequenza_programmi" al cui interno è presente la sottocartella "Applicazioni" con i vari software e il file bat di lancio, (i nomi delle cartelle devono essere preferibilmente senza spazi).
L'unico problema non risolto è che questo file bat deve essere lanciato come amministratore, altrimenti i vari programmi chiamati dai percorsi non vengono installati.
Se qualche utente potrebbe risolvere questo piccolo problema sarebbe l'ideale.
Questo è lo scrip di lancio:

Codice:
@echo off
:inizio
cls
Color 2f
echo ==========================================
echo.
echo  Installazione software in sequenza
echo.
echo ==========================================
echo.
echo Se questo file non e'stato lanciato come amministratore
echo dovete uscire e lanciarlo come amministratore.
echo.
set /p var=vuoi continuare? (S/N):

if %var% == S goto install
if %var% == s goto install
if %var% == N goto exit
if %var% == n goto exit
goto inizio

:install
cls
echo ==========================================
echo.
echo  Installazione software in sequenza
echo.
echo ==========================================
echo.

SetLocal enableextensions

SET MYR=Lancio_sequenza_programmi\Applicazioni

FOR %%i IN (C D E F G H I J K L M N O P Q R S T U V W X Y Z) DO IF EXIST %%i:\%MIR%\*.* SET CDROM=%%i:
SET ROUTE=%CDROM%\%MYR%

start /wait %ROUTE%\Programma_silent_xx1.exe
start /wait %ROUTE%\Programma_silent_xx2.exe
start /wait %ROUTE%\Programma_silent_xx...exe

Un saluto

Re: Installazione sequenziale programmi con file bat Di: BAT

solo per info:
di 7-zip è uscita la versione 9.36-beta che, a dispetto del nome, è piuttosto stabile;

di Adobe Reader è uscita tra il 10-12 Dicembre mi pare, la versione 11.0.10
se non hai un installer aggiornato puoi creartene uno in Italiano con l'installazione amministrativa:
Creare un installer di Adobe Reader XI aggiornato con tutte le patch mediante l'installazione amministrativa
o eventualmente aggiornare quella che hai già
Aggiornare un'installazione amministrativa di Adobe Reader XI
Il solo problema è che non si ha un singolo .exe ma una struttra di cartelle.

Molto più probabilmente conviene fare un'installazione già configurata con il Customization Wizard
Adobe Customization Wizard XI, personalizzare l'installazione e la configurazione di Adobe Reader ed Acrobat
Questa in particolare è molto utile per fare tutto in un sol colpo, non solo l'installazione ma anche la configurazione delle opzioni (come rimozione del collegamento sul desktop, rimozione dei servizi inutili Adobe ecc.)

nelle guide che ti ho indicato ci sono, oltre che le istruzioni passo-passo per pre-costruire e pre-configurare l'installer, anche i comandi che puoi inserire nel tuo file .BAT (nelle guide li ho inseriti come comandi da dare al prompt)
Re: Installazione sequenziale programmi con file bat Di: DMD

Ti ringrazio per le preziose info.
Gli eseguibili silent inseriti nello script erano solo a scopo di esempio,
il "nocciolo" della questione è come lanciare il file bat anche senza i permessi di amministratore se è possibile.

Un saluto e buon Anno.
Re: Installazione sequenziale programmi con file bat Di: BAT

Secondo me non si può lanciare un .bat, un .cmd o un qualsiasi script in modo che sia eseguito automaticamente in modalità amministratore;
all'atto del lancio di uno script, anche quando a mano selezioni "esegui come amministratore" l'UAT chiede conferma e lo fa PRIMA di eseguire qualsiasi istruzione dello script.
Anche in AutoIT per esempio, quando si ha la necessità di eseguire comandi con privilegi elevati, nello script serve la direttiva
#RequireAdmin
ma è appunto una richiesta, non credo si possa impostare per autorispondersi "SI" altrimenti salta tutto il meccanismo di sicurezza

Altrimenti devi usare utility come RunAs (http://www.softtreetech.com/24x7/archive/53.htm);
(è per XP) in questo caso è l'utility stessa a lanciare un .bat con l'utente specificato per esempio

RunAs Admin password file.bat
il problema è che in tal caso il lancio deve avvenire dall'utility stessa ed inoltre vanno inseriti in chiaro amministratore e password;
insomma anche qui è un po' un pasticcio

Il punto è che per acquisire i privilegi elevati serve conferma esplicita da parte dell'utente.
Re: Installazione sequenziale programmi con file bat Di: DMD

OK! per la sicurezza sono sempre favorevole.

Allora la cosa più corretta che dovrei fare, è inserire un avviso e  modificare il file bat di lancio,
in modo tale se viene lanciato senza essere amministatore mi dia l'exit automatico dal file di lancio.
Non so quale comando possa funzionare in tal senso.

Un saluto

Re: Installazione sequenziale programmi con file bat Di: onepiece

Ciao DMD, come gia detto qui
Ciao DMD, non esiste un modo anzi e completamente vietato\impossibile in WindowsNT6.x modificare il registro HKLM o altri impostazioni protette dal Admin Right senza eseguire come Admin il file.exe o file.msi o altro qualunque cosa sia, il punto e che molti si confondono (capiscano male, e sono mal informati) riguardo la disabilitazione del UAC in Windows Vista/Seven, che lo capiscano come un soluzione di problemi, invece e completamente il contrario, quello solo non visualizza il MsgBox di richiesta, cosi anche con UAC disabilitato se non sei Admin o non esegui come Admin un applicazione non potrai modificare il registro o altro, anzi a molti li a creato molti problemi il UAC disabilitato perché eseguono un EXE e in silent mod quello exe (non essendo il UAC abilitato parte dopo come utente normale) non fa tutto il lavoro ma solo una parte del lavoro, e utente non capisce proprio niente (in caso che il creatore del applicazione non a preveduto a quello scenario e non informa il Utente) e questo e un cosa davvero seria perché nemmeno ti accorgi che qualche cosa non va, adesso molti applicazioni seri hanno presso le precauzioni al riguardo (dal Manifest Resources si indica\chiede al sistema eseguire per forza come Admin Right (requireAdministrator) quello file, oppure non procedere avanti) ma non tutti diciamo, perché nel Manifest Resources potrà essere indicato esegui il file come permessi massimi possibili (highestAvailable), se sei Admin esegui come Admin se no esegui comunque (in questo caso uguale come asInvoker) etc etc, in tempo del Windows Vista sono stati molti rimanere vittime di certi scenari (perché ne allora e ne oggi molti applicazioni non usano il Manifest Resources ehhh), cosi il UAC disabilitato potrà essere la fonte di problemi molto molto seri, cosi e consigliato manterrete sempre UAC abilitato

in povere parole il tuo "RunOnceEx.cmd" chi lo lancia\esegue ???? se e un processo che non ha i permessi di Admin allora non ce modo eseguire applicazioni che necessitano per forza il Admin Right
e impossibile eseguire un file in caso se esecutore non e Admin o che non e processo derivato da un processo con Admin Right, tutto questo per dire che non e possibile non esiste diciamo

secondo me i scenari sono 2
1 - stai cercando fare modificazioni in un sistema dove non sei Admin, una cosa impossibile e per di più una cosa sbagliata diciamo
2 - (che io credo che e il tuo scenario) stai cercando eseguire un file (qualunque sia) e vuoi evitare MsgBox che chiede di Admin Right, anche questo e impossibile se il processo che eseguirà il file non e un processo derivato da un processo con Adimn Right

secondo me stai cercando di risolvere un problema in modo sbaglio dire piu bene stai cercando fare una cosa impossibile per forza, quando la cosa stessa e tropo semplice e si risolve in tanti modi, io consiglio Autoit ma un tra i piu popolari al riguardo e il 7-Zip SFX (che te lo raccomandato anni fa quando usavi il WinRar SFX)

1 - serve DMDSetup.7z, cosi serve archiviare con 7-Zip la cartella che contiene il DMDSetup.cmd piu tutti i setup exe msi etc etc (archivia tipo UdatePack AddOn selezionandole file da dentro cartella)
2 - serve aprire Notepad e scrivere
Codice:
;!@Install@!UTF-8!
RunProgram="hidcon:cmd /c DMDSetup.cmd"
GUIMode="2"
;!@InstallEnd@!
salva come DMDSetup.txt
3 - serve il DMDSetup.sfx gia allegato, che non e altro che il 7zsd.sfx rinominato in DMDSetup.sfx
4 - esegui
Codice:
copy /b DMDSetup.sfx + DMDSetup.txt + DMDSetup.7z DMDSetup.exe
ed ecco hai il tuo DMDSetup.exe che potrai fare quello ce vuoi, per di piu come sempre il file DMDSetup.cmd il DMDSetup.exe la eseguirà in Hide Mod (perfetto diciamo)
 
guardi qui per di piu http://www.eng2ita.net/forum/index.php/topic,1874.0.html visto che dal 7zsd.sfx potai fare davvero molto altro

ti o allegato anche il DMDSetupTest.zip, che contiene dentro 2 exe, per provarli direttamente, semplicemente scrivano un file test in desktop
il primo e quello del procedura sopra, dove il DMDSetup.cmd a dentro solo il
Codice:
echo Ciao DMD >> "%UserProfile%\Desktop\Test.txt"
il secondo (e la stesa cosa ma di piu per dare un esempio) non esegue nessun file, ma esegue tutto dal file config (DMDSetup.txt in questo caso)
Codice:
;!@Install@!UTF-8!
RunProgram="hidcon:cmd /c echo Ciao DMD >> \"%UserProfile%\\Desktop\\Test2.txt\""
GUIMode="2"
;!@InstallEnd@!

come sempre ti consiglio usare il 7z SFX Tool per velocizzare le procedure o come dire per fare tutto in un click

Ciao.
Re: Installazione sequenziale programmi con file bat Di: onepiece

solo per info guardi come e fato il file config del Java silent AddOn
Codice:
;!@Install@!UTF-8!
GUIMode="2"
MiscFlags="4"
RunProgram="x86:hidcon:cmd /c For /L %i In (0,1,67) Do MsiExec /qn /X{26A24AE4-039D-4CA4-87B4-2F832170%iFF}"  
RunProgram="jre_7u67_x86.msi /qn ADDLOCAL=ALL IEXPLORER=1 MOZILLA=1 SYSTRAY=0 JAVAUPDATE=0 JU=0 AUTOUPDATECHECK=0 /norestart"
RunProgram="x64:hidcon:cmd /c For /L %i In (0,1,67) Do MsiExec /qn /X{26A24AE4-039D-4CA4-87B4-2F864170%iFF}"  
RunProgram="x64:jre_7u67_x64.msi /qn ADDLOCAL=ALL IEXPLORER=1 MOZILLA=1 SYSTRAY=0 JAVAUPDATE=0 JU=0 AUTOUPDATECHECK=0 /norestart"
RunProgram="x86:hidcon:cmd /c \"%programfiles%\\Java\\jre7\\bin\\jqs.exe\" -unregister"  
RunProgram="x64:hidcon:cmd /c \"%programfiles(x86)%\\Java\\jre7\\bin\\jqs.exe\" -unregister"
RunProgram="x86:hidcon:cmd /c For /L %i In (0,1,11) Do MsiExec /qn /X{26A24AE4-039D-4CA4-87B4-2F832180%iFF}"  
RunProgram="jre_8u11_x86.msi /qn ADDLOCAL=ALL IEXPLORER=1 MOZILLA=1 SYSTRAY=0 JAVAUPDATE=0 JU=0 AUTOUPDATECHECK=0 /norestart"
RunProgram="x64:hidcon:cmd /c For /L %i In (0,1,11) Do MsiExec /qn /X{26A24AE4-039D-4CA4-87B4-2F864180%iFF}"  
RunProgram="x64:jre_8u11_x64.msi /qn ADDLOCAL=ALL IEXPLORER=1 MOZILLA=1 SYSTRAY=0 JAVAUPDATE=0 JU=0 AUTOUPDATECHECK=0 /norestart"
RunProgram="x86:hidcon:cmd /c \"%programfiles%\\Java\\jre8\\bin\\jqs.exe\" -unregister"  
RunProgram="x64:hidcon:cmd /c \"%programfiles(x86)%\\Java\\jre8\\bin\\jqs.exe\" -unregister"
;!@InstallEnd@!
guardi le x86:hidcon:cmd e il x64:hidcon:cmd eseguono il comando come x32 oppure come x64, e se il exe viene esseguito in Windows 32Bit allora le x64:hidcon:cmd etc etc vano ignorati e non vengono eseguiti

 oppure il
Codice:
RunProgram="hidcon:cmd /c DEL /F /S /Q /A \"%AppData%\\Microsoft\\Internet Explorer\\Quick Launch\\User Pinned\\TaskBar\\*\" "
RunProgram="hidcon:cmd /c REG DELETE \"HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Taskband\" /F"
RunProgram="hidcon:cmd /c taskkill /f /im explorer.exe"
RunProgram="hidcon:cmd /c start explorer.exe"
RunProgram="Shockwave_Installer_Full.exe /SILENT"
RunProgram="QuickTime.msi /QN REBOOT=ReallySuppress"
in povere parole in 7-Zip SFX serve solo scrivere comandi CMD (e come si vede si fa tutto molto molto meglio e con piu opzioni al riguardo) niente altro

come si capisce gia solo in occasioni estremi diciamo quando serve un script molto molto complicato con piu line, serve usare il file cmd stesso, del resto e sempre e meglio usare il file config, visto che come dice il titolo del topic serve eseguire tutto in Wait mod, e il 7-Zip SFX aspetta sempre la fine di un processo prima di partire altro etc etc, cosi e piu sicuro piu OKKKKK usare il 7-Zip SFX per lanciare o eseguire i Silent Installer

Ciao.
Re: Installazione sequenziale programmi con file bat Di: MISTER_X_ITA

@DMD
oppure inserisci la verifica dei privilegi nello script:
 
Codice:
@ECHO OFF
::Testa se lo script ha i privilegi di Admin
AT > NUL
IF %ERRORLEVEL% EQU 0 (
    msg * Script eseguito come amministratore
    ) ELSE (
    ECHO Script eseguito senza privilegi di amministratore. Uscita in corso...
    rem la prossima riga e' il delay di uscita dallo script   
    PING 127.0.0.1 > NUL 2>&1
    EXIT /B 1
)

Re: Installazione sequenziale programmi con file bat Di: MISTER_X_ITA

Mi e' venuto in mente adesso che per i collegamenti e' consentito la modifica delle proprieta' avanzate per eseguire il file come admin  (quindi fai un collegamento al file bat o cmd)


Re: Installazione sequenziale programmi con file bat Di: onepiece

Ciao MISTER X ®, il problema del DMD riguarda Unatended (la destinazione e sempre una variabile cosi non sei mai certo che il collegamento punterà al file), e una cosa che conosciamo bene abbiamo sofferto tutti li al riguardo, e pensare noi in tempo del XP quando era tutto piu facile ehhh, nemmeno oso pensare oggi che rottura e fare certi cose da file cmd in Windows 7 o altro, appunto li o ripetuto piu volte a DMD cominciare pensare fare tutto in AutoIt o almeno in 7-Zip SFX, visto che vuoi o non vuoi dovrai farlo per forza visto che non ce proprio nessun altra scelta ehhhhhhhhh, in povere parole li serve un setup.exe, come detto sopra con 7-Zip SFX potrà creare un exe da 50-100KB e dopo fare proprio quello che vuole senza modificare niente in suo progetto, il 7-Zip SfX a opzioni senza fine li ce solo imbarazzo della scelta come si dice, ecco un altro esempio
Codice:
;!@Install@!UTF-8!
RunProgram="hidcon:cmd /c \"%%S\\DMDSetup.cmd\""
GUIMode="2"
;!@InstallEnd@!
il %%S e sempre il Path del Exe stesso, cosi serve solo copiare il exe, in questo caso il DMDSeup.exe nel direttori dove e il DMDSeup.cmd, e basta eseguire il DMDSeup.exe

Ciao.

LO-FI Version 1.0 by DarkWolf - Valid XHTML 1.0! - CSS 2.1!