Seite 1 von 1

hostname check als bedingung f. installation

Verfasst: 05 Nov 2015, 16:29
von Alukartfahren
Hallo, ich bräuchte mal einen Denkanstoß, und zwar habe ich folgende Situation:

Ich lasse Software nach dem OS-Deployment über eine Tasksequenz installieren, im Image steht dann bei excute after Installation "macheTasksequenz.opsi", diese Sequenz zieht durch Abhängigkeiten und Prios die benötigten Pakete ran.

Jetzt will ich Office installieren bzw in die "Taskliste" mit einbringen.

Ein Client soll also bei der Neuinstallation Office bekommen, aber nur, wenn sein Hostname nicht PC-XXXXXXX ist.
Wir haben bei uns 2 Arten von Hostnamen, einmal PCs wie oben, und Notebooks NB-XXXXXX. Notebooks bekommen alle Office, MANCHMAL bekommen auch PCS Office.
Ich hatte mir gedacht, ich bau zwei Pakete, eins prüft, ob der Hostname PC-XXXXXXX ist, falls ja wird das Script beendet, nichts installiert und er installiert das nächstpriorisierte paket, falls nein ist er NB-XXXXXXX, also wird opsipaket zwei, also das richtige Office installiert. So kann ich dann auch bei Bedarf das Office irgendeinem PC-XXXXXX zuweisen, ohne dass er sich am hostnamen stört.
Ist das schlau? Oder gibt es Tipps für eine alternative Vorgehensweise?

Re: hostname check als bedingung f. installation

Verfasst: 06 Nov 2015, 13:42
von n.wenselowski
Hi,

ich würde das Paket nur Checken lassen und die eigentliche Installation jeweils in einem extra Paket machen.


Gruß

Niko

Re: hostname check als bedingung f. installation

Verfasst: 12 Nov 2015, 14:55
von Alukartfahren
Hallo, hab das soweit, die standalone Officeinstallation funktioniert, das Hostnamenchecken im zweiten paket auch, aber wie rufe ich ein Setup.opsiscript IN einem Setup.opsiscript auf? Ich finde in der Winst-Doku nichts passendes dazu.

Hab das jetzt so gemacht, ich könnte natürlich noch eine Batch für das office bauen und dann aufrufen, aber das muss doch auch eleganter gehen, oder?

[Actions]
requiredWinstVersion >= "4.11.4.6"
DefVar $PCHOSTNAME$
DefVar $PCSYSTYPE$
DefVar $OFFICEINSTALLATION$

set $PCHOSTNAME$ = "%PCName%"
set $PCSYSTYPE$ = "NB"

if contains($PCHOSTNAME$,$PCSYSTYPE$)
comment "Start Officeinstallation"
sub_installoffice (Ab hier alles falsch)
EndIf
[sub_installoffice]
; set $OFFICEINSTALLATION$ = "I:\microsoftoffice2007-std\setup.opsiscript"
"I:\microsoftoffice2007-std\setup.opsiscript"

Re: hostname check als bedingung f. installation

Verfasst: 13 Nov 2015, 09:48
von holgerv
Alukartfahren hat geschrieben:[...] wie rufe ich ein Setup.opsiscript IN einem Setup.opsiscript auf? Ich finde in der Winst-Doku nichts passendes dazu.
Was Du m. E. tun solltest, ist aus einem opsi-Paket heraus ein anderes opsi-Paket auf "setup" setzen ... und zwar nur dann, wenn es nicht ohnehin schon installiert ("installed") ist. Das geht wie folgt (im Beispiel wird "ms-office-2013-professional" auf "setup" gestellt):

Code: Alles auswählen

[Actions]

DefVar $OfficeProductID$

Set $OfficeProductID$="ms-office-2013-professional"

; MS Office already installed?
if takeString(0, getReturnListFromSection('OpsiServiceCall_getIdentIfInstalled')) = "[]"
   ; MS Office not installed yet, so set it to "setup":
   OpsiServiceCall_setActionRequest
   ; initiate reboot, so the new action request will be executed
   ExitWindows /Reboot
endif

[OpsiServiceCall_getIdentIfInstalled]
   "method": "productOnClient_getIdents"
   "params": [
      "unicode",
      '{"clientId":"%HostID%","productId":"$OfficeProductID$","installationStatus":"installed"}'
   ]

[OpsiServiceCall_setActionRequest]
   "method": "setProductActionRequestWithDependencies"
   "params": [
      "$OfficeProductID$",
      "%HostID%",
      "setup"
   ]
Der Code ist so nicht getestet ... kann sein, dass noch der eine oder andere Syntaxfehler drin ist. Aber im Prinzip sollte es so funktionieren.

... das Ganze lässt sich bestimmt noch verbessern. Z. B. kannst Du abfragen, ob der ActionRequest "setup" schon vorher gesetzt ist und nur dann einen Reboot machen, wenn Du den ActionRequest neu setzt.

Viel Erfolg!


Holger

[edit: Kommentarzeichen geändert, ich hatte zunächst "#" an Stelle von ";" verwendet.]