Avatar billede nph12 Nybegynder
23. januar 2004 - 22:44 Der er 15 kommentarer og
1 løsning

Silent Installation menu

Hej
Jeg har lavet nogle forskellige bat-filer, som kører silent installation på nogle programmer. Jeg har lavet dem ud fra denne side:

http://www.msfn.org/unattended/2003/index.htm

Jeg kunne godt tænke mig, at få lavet en menu hvorfra jeg kan vælge, hvilke programmer der skal installeres. Noget i denne stil:

Sæt kryds i de programmer som skal installeres:

[x] Program1
[ ] Program2


Hvordan laver jeg en sådan menu?
Avatar billede bertelbrander Novice
24. januar 2004 - 00:22 #1
Det er vist ikke muligt at lave den slags menu i en .bat fil, problemet er at finde en metode til at få sat krydset.

Jeg lavede lige en anden type menu, som kan bruges hvis DOS er Win2000 eller WinXP.
Ideen er at brugeren taster sine valg (i eksemplet kan der vælges mellem m i o), og trykker enter:

@echo off
echo Hvilke Browsere vil du have instaleret:
echo m Mozilla
echo i Internet Explorer
echo o Opera

set /P Valg=">"

if not [%valg:m=%]==[%valg%] Echo Instaler Mozilla
if not [%valg:i=%]==[%valg%] Echo Instaler Internet Explorer
if not [%valg:o=%]==[%valg%] Echo Instaler Opera
Avatar billede nph12 Nybegynder
24. januar 2004 - 14:09 #2
Kan du hjælpe mig med mit andet spørgsmål?

http://www.eksperten.dk/spm/442289

Hvordan laver jeg bat-fil, som henviser til den bat-fil, som f.eks installere adobe reader 6? Kan man vælge, at installere flere programmer på samme tid?

AdobeReader6.bat
----------------
@echo off
ECHO.
ECHO Installing Adobe Reader 6
ECHO Please wait...
start /wait %systemdrive%\programmer\AdobeReader6\AR6.msi /QB

Media player 9.bat
------------------
@echo off
ECHO.
ECHO Installing Windows Media Player 9
ECHO Please wait...
start /wait %systemdrive%\programmer\WMP9\MPSetup.exe /Q:A /R:N
Avatar billede bertelbrander Novice
24. januar 2004 - 14:17 #3
Jeg kan vist ikke hjælpe med ghost problemet, jeg forstår heller ikke hvad der sker.

Hvis man skal kalde en bat fil fra en anden bruger man call, f.ex:
call AdobeReader6.bat

Med den menu jeg lavede skriver man "mo <enter>" (eller "om <enter>") hvis man vil have instaleret både Mozilla og Opera
Avatar billede nph12 Nybegynder
24. januar 2004 - 18:53 #4
Det virker til at finde ud af. Kan jeg lave det sådan, at man kan vælge at køre alle programmer (f.eks. vælg a for alle programmer)? Kan man så evt. lave det sådan at man kan vælge a minus f.eks. m?
Avatar billede bertelbrander Novice
24. januar 2004 - 20:49 #5
Mulighederne er mange, jeg har lavet en lidt udvidet version.

Her kan man vælge at til og fra en default liste, det gøres ved at skrive hvilke programmer der skal tilføjes til listen evt. efterfulgt af et - og hvilke programmer fra default listen der ikke skal instaleres, man skriver a for at få instaleret alle (eller ingen), f.ex:

i-o -> Tilføj IE, fjern Opera fra listen.
a-m -> Alt undtagen Mozilla.
i  -> Tilføj IE til listen.
    -> Default

Desværre skal man skrive mindst et tegn inden -, det kan i eksemplet være f.ex. d, f.ex:
d-o -> Default minus Opera.

@echo off
setlocal
rem Set default options
set InsIE=0
set InsMoz=1
set InsOpera=1

echo Hvilke Browsere vil du have instaleret, default is Mozilla and Opera:
echo m Mozilla
echo i Internet Explorer
echo o Opera
set Valg=
set /P Valg=">"

for /F "tokens=1,2 delims=- " %%I in ("%Valg%") do call :GetOpt %%I %%J

if not [%InsMoz%]==[0] echo Instaler Mozilla
if not [%InsIE%]==[0] echo Instaler Internet Explorer
if not [%InsOpera%]==[0] echo Instaler Opera

goto :eof
:GetOpt
Set Add=%1
set Sub=%2

if not [%Add:a=%]==[%Add%] (
  set InsMoz=1
  set InsIE=1
  set InsOpera=1
)
if not [%Add:m=%]==[%Add%] Set InsMoz=1
if not [%Add:i=%]==[%Add%] Set InsIE=1
if not [%Add:o=%]==[%Add%] Set InsOpera=1

if [%Sub%]==[] goto :eof
if not [%Sub:a=%]==[%Sub%] (
  set InsMoz=0
  set InsIE=0
  set InsOpera=0
)
if not [%Sub:i=%]==[%Sub%] Set InsIE=0
if not [%Sub:m=%]==[%Sub%] Set InsMoz=0
if not [%Sub:o=%]==[%Sub%] Set InsOpera=0
Avatar billede nph12 Nybegynder
27. januar 2004 - 16:35 #6
Jeg har fået rettet lidt i scriptet. Kan man ikke bare vælge et program fra default listen, ved et direkte valg (f.eks. I)? Når jeg prøver det, installeres alle programmerne fra default listen. Skal den det eller gør jeg noget forkert?

@echo off
setlocal
rem Set default options
set InsIE=1
set InsMP=1
set InsDX=1
set InsAR=0

echo Disse programmer er default:
echo [I] Internet Explorer 6
echo [W] Windows Mediaplayer 9 
echo [X] DirectX 9.0b
echo.
echo Programmer udover default:
echo [R] Adobe Reader 6
echo.
echo Indtast dit valg her:
set Valg=
set /P Valg=">"

for /F "tokens=1,2 delims=- " %%I in ("%Valg%") do call :GetOpt %%I %%J

if not [%InsIE%]==[0] call "%systemdrive%\Bat\IE6.bat"
if not [%InsMP%]==[0] call "%systemdrive%\Bat\Media player.bat"
if not [%InsDX%]==[0] call "%systemdrive%\Bat\directx.bat"
if not [%InsAR%]==[0] call "%systemdrive%\Bat\AdobeReader6.bat"

goto :eof
:GetOpt
Set Add=%1
set Sub=%2

if not [%Add:a=%]==[%Add%] (
  set InsIE=1
  set InsMP=1
  set InsDX=1
  set InsAR=1
)
if not [%Add:I=%]==[%Add%] Set InsIE=1
if not [%Add:W=%]==[%Add%] Set InsMP=1
if not [%Add:X=%]==[%Add%] Set InsDX=1
if not [%Add:R=%]==[%Add%] Set InsAR=1

if [%Sub%]==[] goto :eof
if not [%Sub:a=%]==[%Sub%] (
  set InsIE=0
  set InsMP=0
  set InsDX=0
  set InsAR=0   
)
if not [%Sub:I=%]==[%Sub%] Set InsIE=0
if not [%Sub:W=%]==[%Sub%] Set InsMP=0
if not [%Sub:X=%]==[%Sub%] Set InsDX=0
if not [%Sub:R=%]==[%Sub%] Set InsAR=0
Avatar billede bertelbrander Novice
27. januar 2004 - 20:15 #7
Som det er lavet vil den altid instalere IE. medmindre at brugeren skriver f.ex x-I, dvs. aktivt fravælger IE.

Man kan lave det om så alle er fravalgt (set xxx=0) og så sætte Valg til at være default inden "set /P ...". Så vil den instalere default hvis brugeren blot trykker enter. (Det vist en udokumenteret feature; set /P X= ændrer ikke på X hvis man kun trykker enter.), hvis brugeren derimod skriver I vil den kun instalere IE.
Man kunne også lave det så d betyder default, så kan brugeren skrive dR for at få default + AcrobatReader, elller d-I for at få default minus IE.
Det ville se ca. sådan ud:
@echo off
setlocal
rem Set default options
set InsIE=0
set InsMP=0
set InsDX=0
set InsAR=0

echo Disse programmer er default:
echo [I] Internet Explorer 6
echo [W] Windows Mediaplayer 9
echo [X] DirectX 9.0b
echo.
echo Programmer udover default:
echo [R] Adobe Reader 6
echo.
echo Indtast dit valg her:
set Valg=d
set /P Valg=">"

for /F "tokens=1,2 delims=- " %%I in ("%Valg%") do call :GetOpt %%I %%J

if not [%InsIE%]==[0] echo IE
if not [%InsMP%]==[0] echo MP
if not [%InsDX%]==[0] echo DX
if not [%InsAR%]==[0] echo AR

goto :eof
:GetOpt
Set Add=%1
set Sub=%2

if not [%Add:a=%]==[%Add%] (
  set InsIE=1
  set InsMP=1
  set InsDX=1
  set InsAR=1
)
if not [%Add:d=%]==[%Add%] (
  set InsIE=1
  set InsMP=1
  set InsDX=1
  set InsAR=0
)
if not [%Add:I=%]==[%Add%] Set InsIE=1
if not [%Add:W=%]==[%Add%] Set InsMP=1
if not [%Add:X=%]==[%Add%] Set InsDX=1
if not [%Add:R=%]==[%Add%] Set InsAR=1

if [%Sub%]==[] goto :eof
if not [%Sub:a=%]==[%Sub%] (
  set InsIE=0
  set InsMP=0
  set InsDX=0
  set InsAR=0
)
if not [%Sub:I=%]==[%Sub%] Set InsIE=0
if not [%Sub:W=%]==[%Sub%] Set InsMP=0
if not [%Sub:X=%]==[%Sub%] Set InsDX=0
if not [%Sub:R=%]==[%Sub%] Set InsAR=0
Avatar billede nph12 Nybegynder
28. januar 2004 - 17:16 #8
Okay.

enter=default
d=default
a=all

d+r=default + Adobe Reader 6
d-w=default - Windows Mediaplayer 9

i=Internet Explorer 6

Jeg har forstået det rigtigt?

Er det bedst, at give programmer bogstaver eller kan man også give dem tal? a og d er jo taget. Kan man godt havde flere plusser og minusser i indtastningen?

Hvordan skriver man valgmulighederne på en forståelig måde (så det også kan bruges af andre)?

Noget i stil med dette:
[enter] default
[d] default
[a] all
Avatar billede bertelbrander Novice
28. januar 2004 - 20:07 #9
Ja, du har forstået det rigtigt.

Hvis man kan give programmerne logiske bogstaver vil jeg mene at det er lettere at bruge. Men er der to programmer der starter med det samme bogstav undgår man måske nogen fejl ved at bruge tal.

Som det er lavet kan der kun være en plus gruppe og en minus gruppe. Man kan (måske) godt lave det så der er muligt at have flere, men det er vist mere end almindeligt besværligt.
Avatar billede bertelbrander Novice
28. januar 2004 - 23:19 #10
Jeg lavede lige en anden model, der ligner dit oprindelige forslag lidt mere, og som måske er lidt lettere for brugeren at bruge:

@echo off
setlocal

rem Set default options
set InsIE=0
set InsMP=1
set InsDX=1
set InsAR=0

:MenuTop
cls
if %InsIE% EQU 0 (
  echo I [ ] Internet Explorer
) else (
  echo I [X] Internet Explorer
)

if %InsMP% EQU 0 (
  echo M [ ] Media Player
) else (
  echo M [X] Media Player
)

if %InsAR% EQU 0 (
  echo A [ ] Adobe Reader
) else (
  echo A [X] Adobe Reader
)

if %InsDX% EQU 0 (
  echo D [ ] DirecX
) else (
  echo D [X] DirecX
)

echo Type Letter + ^<Enter^> to toggle, ^<Enter^> to install
set Valg=
Set /P Valg=">"

if [%Valg%]==[] goto :Install
if not [%Valg:I=%]==[%Valg%] Set /A "InsIE = %InsIE% ^1"
if not [%Valg:M=%]==[%Valg%] Set /A "InsMP = %InsMP% ^1"
if not [%Valg:D=%]==[%Valg%] Set /A "InsDX = %InsDX% ^1"
if not [%Valg:A=%]==[%Valg%] Set /A "InsAR = %InsAR% ^1"
goto :MenuTop

:Install
if not [%InsIE%]==[0] echo IE
if not [%InsMP%]==[0] echo MP
if not [%InsDX%]==[0] echo DX
if not [%InsAR%]==[0] echo AR
Avatar billede nph12 Nybegynder
30. januar 2004 - 13:56 #11
Det er jo bare perfekt! Den arbejder jeg videre på. Jeg skal bare ændre eks. echo IE til call IE.bat?

Jeg har tænkt mig, at ligge alle programmerne ned på en cd. Hvilken sti skal jeg så give IE.bat (skal ligge under mappen bat)?

Kan man så kopiere alle programmer over på harddisken uden at ærdre i stien?
Avatar billede bertelbrander Novice
30. januar 2004 - 21:01 #12
Ja, du skal kalde IE.bat for at instalere og ikke blot skrive at du vil instalere.

Jeg er ikke sikker på at jeg forstår hvilken sti det er du skal have.

Skal scriptet ligge på CD'en? Hvis det skal og IE.bat ligger i en mappe i roden der hedder bat kalder du det blot med "\bat\ie.bat", hvis bat er en undermappe til den hvori scriptet ligger skriver du blot "bat\ie.bat" eller ".\bat\ie.bat" (. er nuværende mappe og drev). 

Jeg kender ikke nogen simpel metode til at finde ud af hvilket drev CD'en sidder i.
Avatar billede nph12 Nybegynder
09. februar 2004 - 20:59 #13
Jeg tror, at det kører som det skal nu. Takker mange gange for hjælpen!
Avatar billede nph12 Nybegynder
09. februar 2004 - 21:00 #14
Vil du have point eller skal jeg bare selv tage dem?
Avatar billede bertelbrander Novice
09. februar 2004 - 21:40 #15
Jeg vil ikke have point, så tag dem selv.
Avatar billede nph12 Nybegynder
10. februar 2004 - 08:41 #16
Okay
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester