Patch Installation eines Programmes

Antworten
DerDoctor
Beiträge: 7
Registriert: 14. Nov 2019, 10:47
Kontaktdaten:

Patch Installation eines Programmes

Beitrag von DerDoctor » 27. Aug 2020, 15:51

Hallo,

ich muss einen Programm-Patch einer Spezialsoftware installieren.
Der Patch selbst liegt auf einer Server-Freigabe. Er ändert sich regelmäßig, die Sourcen legt die Fachabteilung immer dorthin.
Vorher muss Outlook und das Programm selbst geschlossen werden.
Hierzu würde ich gerne folgendes Powershell ausführen lassen:

patch.ps1
Get-Process OUTLOOK | foreach {$_.kill()}
Get-Process ITSM* | foreach {$_.kill()}
msiexec.exe /p "\\server\Install\Version 4.9\Patches\patch.msp" REINSTALL=ALL REINSTALLMODE=omus

Lösungsansatz: setup.inf
[Environment]
Install=powershell.exe -executionpolicy bypass -file "%SRC%\Patch.PS1" -SilentMode "YES"

[Set:Installation]
AddMeter -1
Call %Install% /S2
If "%ErrorLevel%" <> "0" Then "SET:InstallationError" EndIf


Das Paket muss auf Rechnern ohne Admin Berechtigungen laufen.
Es steigt mit ErrorLovel 5 aus.

Was ist falsch?
Das Script selber funktioniert.

Gruß
DerDoctor

Benutzeravatar
Hendrik_Ambrosius
Moderator
Moderator
Beiträge: 7662
Registriert: 13. Dez 2004, 23:10
Wohnort: Adendorf/Lüneburg

Re: Patch Installation eines Programmes

Beitrag von Hendrik_Ambrosius » 27. Aug 2020, 16:28

Vor dem Zugriff auf den Server müssen Sie sich dort mit einem "CALL NET USE ..." anmelden.
Hendrik Ambrosius / Senior Consultant
Mobile: +49 172 408 4447 | hendrik.ambrosius@matrix42.com
Matrix42 AG | Elbinger Straße 7 | 60487 Frankfurt am Main | Germany | www.matrix42.com

Disclaimer: I participate in this forum on a voluntary basis. Views expressed are not necessarily those of Matrix42 AG or of the support team.

Benutzeravatar
bboehm
Beiträge: 558
Registriert: 07. Apr 2008, 18:47
Wohnort: München
Kontaktdaten:

Re: Patch Installation eines Programmes

Beitrag von bboehm » 28. Aug 2020, 06:20

Guten Morgen,

Beim "call" in der setup.inf verstehe ich den /S2 Parameter nicht. Ich denke den gibt es gar nicht, dokumentiert ist er jedenfalls nicht.

Wie Hendrik schon geschrieben hat musst du dafür sorgen, dass das Skript auf die Freigabe zugreifen darf. Der Empirum Agent läuft normalerweise im Kontext "SYSTEM" und hat damit keinerlei Netzwerkberechtigungen.

Oder muss der Patch im Kontext des aktuell angemeldeten Benutzer ausgeführt werden? Dann musst du nämlich deine Setup.inf umbauen.

Schöne Grüße
Bernhard
IT-Administrator mit Migrationshintergrund bei Fraunhofer-Gesellschaft

Produktionssystem: W2k19, Empirum 20.0.3, MS SQL 2017 Enterprise
Testsystem: W2k19, Empirum 20.0.3, MS SQL 2017 Express

DerDoctor
Beiträge: 7
Registriert: 14. Nov 2019, 10:47
Kontaktdaten:

Re: Patch Installation eines Programmes

Beitrag von DerDoctor » 01. Sep 2020, 11:54

Hallo,

vielen Dank für den Hinweis mit dem Netzwerk-Laufwerk. Ich habe es jetzt hinbekommen.
Es lag allerdings an unserem Virenscanner, der das PS Script geblockt hatte.
Ich habe in der Install-Section eine pause eingebaut, da wurde es mir angezeigt.

Hier nun mein PS was funktioniert:

Write-Host -ForegroundColor Red "OUTLOOK wird geschlossen"
Start-Sleep 3
Get-Process OUTLOOK | foreach {$_.kill()}
Write-Host -ForegroundColor Red "Management wird geschlossen"
Start-Sleep 3
Get-Process ITSM* | foreach {$_.kill()}
Write-Host -ForegroundColor Green "Verbinde zum Update Server"
net use S: "\\server\Install\Version 4.9\Patches"
Write-Output -InputObject (net use)
Start-Sleep 3
Write-Host -ForegroundColor Green "Management wird aktualisiert"
Start-Sleep 3
Write-Host -ForegroundColor Green "Update Dialog mit <Weiter>" bestätigen "
Write-Host -ForegroundColor Green "Dieses Fenster schliesst sich in 60 Sekunden automatisch"
Start-Sleep 60
Write-Host -ForegroundColor Red "Alle Aufgaben abgeschlossen"
net use /delete s:
exit

Gruß DerDoctor

Benutzeravatar
bboehm
Beiträge: 558
Registriert: 07. Apr 2008, 18:47
Wohnort: München
Kontaktdaten:

Re: Patch Installation eines Programmes

Beitrag von bboehm » 01. Sep 2020, 11:58

Warum machst du das eigentlich über Powershell und nicht mit Empirum?
IT-Administrator mit Migrationshintergrund bei Fraunhofer-Gesellschaft

Produktionssystem: W2k19, Empirum 20.0.3, MS SQL 2017 Enterprise
Testsystem: W2k19, Empirum 20.0.3, MS SQL 2017 Express

DerDoctor
Beiträge: 7
Registriert: 14. Nov 2019, 10:47
Kontaktdaten:

Re: Patch Installation eines Programmes

Beitrag von DerDoctor » 01. Sep 2020, 12:11

Das PS hatte ich in einer anderen Form schon im Einsatz und wollte es für dieses Zweck abwandeln.
Wir brauchten damals eine Funktion die vor Ausführung des Updates ein Programm schließen musste.
Da ich diese Funktion nochmal benötigte, habe ich das Script nur abgewandelt.

Wenn du einen Vorschlag hast, wie ich das im Empirum machen kann, gerne. So fit bin ich noch nicht.

Benutzeravatar
bboehm
Beiträge: 558
Registriert: 07. Apr 2008, 18:47
Wohnort: München
Kontaktdaten:

Re: Patch Installation eines Programmes

Beitrag von bboehm » 01. Sep 2020, 14:05

Das könntest du natürlich auch alles direkt mit der Empirum Scriptsprache umsetzen. Falls Fehler auftreten, lassen die sich besser auswerten.
IT-Administrator mit Migrationshintergrund bei Fraunhofer-Gesellschaft

Produktionssystem: W2k19, Empirum 20.0.3, MS SQL 2017 Enterprise
Testsystem: W2k19, Empirum 20.0.3, MS SQL 2017 Express

DerDoctor
Beiträge: 7
Registriert: 14. Nov 2019, 10:47
Kontaktdaten:

Re: Patch Installation eines Programmes

Beitrag von DerDoctor » 08. Sep 2020, 16:38

Hallo,
ich habe Bernhards Anregeung aufgenommen und etwas Hirnschmalz reingesteckt.
Das Powershell ist Geschichte.

mache es jetzt so:

Code: Alles auswählen

[SetupInfo]
Author                  = Matrix42
CreationDate            = 26.08.2020
InventoryID             = 
Description             = Syncos Management Update
Method                  = Batch
Tested on               = 
Dependencies            = 
Command line options    = /S2 AW
Last Change             = 16.07.2019
Build                   = 0

[Setup]
Version=14.2
ShowCaption=1
BlockInput=0
Platform=x86

[Application]
ProductName=Syncos Client
DeveloperName=Syncos GmbH
Version=3300.0
Revision=0
;$$$neoDesign1
SetupName=%Packagename% %SetupWizard%
Text1="%Packagename%", Arial, 32, , 000000, 25#, 25#, LEFT BOLD
BackgroundColor=ffa0a0,ffffff
CopyDialogRect=25#, -25#, 0, 0, NORMAL
Logo=Logo.bmp, -25#, -25#, 0, 0, FFFFFF, TRANSPARENT
UninstallDisplayIcon=%App%\%SetupInfDir%\Setup.ico,0
;$$$neoDesign2
;$$$neoRegistry1
UserKeyName=neoPackages\%DeveloperName%\%ProductName%
MachineKeyName=neoPackages\%DeveloperName%\%ProductName%\%Version%
UninstallKeyName=neoPackage %DeveloperName% %ProductName% %Version%
UninstallDisplayName=neoPackage %DeveloperName% %ProductName% %Version%
;$$$neoRegistry2
UninstallString=%ReinstallString% /U
ReinstallString="%CommonSetupDir%\Setup.exe" "%App%\%SetupInfDir%\Setup.inf"
ReinstallMode=0
SrcDir=..
ApplicationDir=%ProgramFilesDir%\neoPackages\%DeveloperName%\%ProductName%\%Version%
SetupInfDir=neoInstall
DataDir=%Personal%
AskUninstallOld=0
ShellLinks=1
CommonShellLinks=1
CreateUnresolvableShellLinks=1
UseStringSection=Strings:09
UseSysStringSection=SysStrings:09
DateWarning=1
SizeWarning=1
Reboot=0
PreventExternalReboot=1
StartServicesOnReboot=0
CallTimeOut=3600
AbortAfterCallTimeOut=1
DisableCancelButton=1
ShowEndMessage=1
EndMessage=%EndMessageDesc%

[Strings:07]
Disk1=Installationsmedium 1
EndMessageDesc=Die Installation wurde erfolgreich abgeschlossen!
ErrorLogMessage=Die Installation/Deinstallation wurde mit einer Fehlermeldung abgebrochen!
InstallationFor=Installation fuer:
InstallerDesc=Dienstprogramm zum Installieren einzelner Komponenten.
InstallerName=Installationsprogramm
SetupWizard=Installations-Assistent
Uninstallation=deinstallieren
ErrorText=Fehler
CallingText=beim Aufruf von

[Strings:09]
Disk1=Installation media 1
EndMessageDesc=Installation was completed successfully!
ErrorLogMessage=The installation/uninstallation aborted with an error message!
InstallationFor=Installation for:
InstallerDesc=Service program to install single components.
InstallerName=Setup program
SetupWizard=Installation Wizard
Uninstallation=Uninstallation
ErrorText=Error
CallingText=launching

[SysStrings:07]
Users=Benutzer
LANG=DEU
LANGID=1031
LANGTEXT=Deutsch

[SysStrings:09]
Users=Users
LANG=ENU
LANGID=1033
LANGTEXT=English

[Environment]
CommonSetupDir=%CommonFilesDir%\Setup%SetupBits%

Packagename=%DeveloperName% %ProductName% %Version%
DisplayVersion={DisplayVersion}

Uninstallkey=

InstallLocation=

DateDD=left("%sysdate%",2)
DateMM=mid("%sysdate%",3,2)
DateYY=right("%sysdate%",4)
TimeHH=left("%LongSysTime%",2)
TimeMM=mid("%LongSysTime%",3,2)
TimeSS=right("%LongSysTime%",2)
InstLogFile=%APP%\Install.%DateYY%-%DateMM%-%DateDD%_%TimeHH%-%TimeMM%-%TimeSS%.log
UninstLogFile=%APP%\Uninstall.%DateYY%-%DateMM%-%DateDD%_%TimeHH%-%TimeMM%-%TimeSS%.log

RegUninstallKey=HKLM,Software\Microsoft\Windows\CurrentVersion\Uninstall\%Uninstallkey%,DisplayName
DetectedDisplayVersion=%%HKLM,Software\Microsoft\Windows\CurrentVersion\Uninstall\%Uninstallkey%,DisplayVersion%%

UninstProg=""
UninstPara=%UninstProg% 

[Processes]
OUTLOOK=OUTLOOK.exe, Microsoft Outlook, KillProcess
SYNCOS=itsmng.exe, SYNCOS Management, KillProcess
[Disks]
1=%Disk1%

[Options]
Installer  = %InstallerName%, COPYALWAYS, Installer,  "%InstallerDesc%"
neoProduct = %ProductName%,   COPYALWAYS, neoProduct, "%ProductDesc%"

[Installer]
1:..\..\..\..\User\Setup.exe,          %CommonSetupDir%, OPTIONAL USEFILENAME DIRECTORY NOSIZEWARNING SETUP, 0
1:..\..\..\..\User\SetupDeu.chm,       %CommonSetupDir%, OPTIONAL USEFILENAME DIRECTORY NOSIZEWARNING SETUP, 0
1:..\..\..\..\User\SetupEnu.chm,       %CommonSetupDir%, OPTIONAL USEFILENAME DIRECTORY NOSIZEWARNING SETUP, 0
1:%SetupInfDir%\Setup.inf,                             , NORMAL,                                             0
1:%Temp%\Setup64.exe,                  %CommonSetupDir%\Setup.exe, OPTIONAL NOSIZEWARNING SETUP ALWAYS WINDOWS64,      0
1:%SetupInfDir%\Logo.bmp,                              , NORMAL,                                             0
1:%SetupInfDir%\Setup.ico,                             , NORMAL,                                             0

[neoProduct]
#Set:neoProduct, DONTDELETE
#Set:neoUninstall, DELETE
#Product

[Set:neoProduct]
If DoesRegKeyExist ("%RegUninstallKey%") == "1" Then "neoReinstall" Else "neoInstall" EndIf

[neoReinstall]
AddMeter -1
AskKillProcesses 20, OUTLOOK, SYNCOS
sleep 2000
callhidden net use S: "\\syncos\Install\Version 4.9\Patches"
msiexec.exe /p "s:\patch.msp" REINSTALLMODE="ecmus" REINSTALL="ALL"
sleep 2000
If "%ErrorLevel%" == "3010" Then "neoRebootRequired" EndIf
Sleep 5000
If "%ErrorLevel%" != "0" & "%ErrorLevel%" != "3010" Then "Set:neoInstallError" EndIf

[neoInstall]
AddMeter -1
AskKillProcesses 20, OUTLOOK, SYNCOS
sleep 2000
callhidden net use S: "\\syncos\Install\Version 4.9\Patches"
msiexec.exe /p "s:\patch.msp" REINSTALLMODE="ecmus" REINSTALL="ALL"
sleep 2000
If "%ErrorLevel%" == "3010" Then "neoRebootRequired" EndIf
Sleep 5000
If "%ErrorLevel%" != "0" & "%ErrorLevel%" != "3010" Then "Set:neoInstallError" EndIf

[Set:neoUninstall]
If "%ErrorLevel%" != "0" & "%ErrorLevel%" != "3010" Then "Set:neoUninstallError" EndIf
-Sleep 5000
If "%ErrorLevel%" == "3010" Then "neoRebootRequired" EndIf
;-Call %InstPara%
-AddMeter -1

[neoRebootRequired]
SetReboot 1
-SetReboot 1

[Set:neoInstallError]
Set ErrorOutput=%ErrorLogMessage% ErrorLevel: %ErrorLevel%
ErrorLogMsg %ErrorOutput%
Abort %ErrorOutput%

[Set:neoUninstallError]
Set ErrorOutput=%ErrorLogMessage% ErrorLevel: %ErrorLevel%
ErrorLogMsg %ErrorOutput%
Abort %ErrorOutput%
-Abort %ErrorOutput%
-ErrorLogMsg %ErrorOutput%
-Set ErrorOutput=%ErrorLogMessage% ErrorLevel: %ErrorLevel%

;~~~~~~~~~~~~~~~~~ Diff - Tuning ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[Product]
#Set:Product
#Reg:Product
#Ini:Product
#Security:Product
#Shell:Product

[Set:Product]

[Reg:Product]
;HKLM,"Software\Microsoft\Windows\CurrentVersion\Uninstall\%Uninstallkey%","SystemComponent",0x00010001,1

[Ini:Product]

[Security:Product]

[Shell:Product]

Mein einziges Manko ist jetzt folgendes:
der Patch funktioniert nicht mit /q Parametern, ich muss immer 1-2 mal OK oder weiter klicken.
Ist aber auch egal, habe ich bei den Programmieren gemeldet.
Ich bekomme aber dadurch schneller die Fertigmeldung der Installation in der GUI als der Patch durch eigentlich durch ist.

wie kann ich das verhindern?

Gruß
der Doctor

Benutzeravatar
bboehm
Beiträge: 558
Registriert: 07. Apr 2008, 18:47
Wohnort: München
Kontaktdaten:

Re: Patch Installation eines Programmes

Beitrag von bboehm » 09. Sep 2020, 06:51

Guten Morgen,

Mit einer Schleife (loop), mit der du prüfst, ob sich z.B. im Uninstall Regkey deiner Software die Version geändert hat; oder ob ein gewisser Installationsprozess noch läuft, leider bei MSI nicht so trivial; oder ob eine Datei vorhanden ist, wird beim Patchen vermutlich auch nicht so gut funktionieren, da ja die Software grundsätzlich schon vorhanden ist;

Schöne Grüße
Bernhard
IT-Administrator mit Migrationshintergrund bei Fraunhofer-Gesellschaft

Produktionssystem: W2k19, Empirum 20.0.3, MS SQL 2017 Enterprise
Testsystem: W2k19, Empirum 20.0.3, MS SQL 2017 Express

Antworten

Zurück zu „Paketierung“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 12 Gäste