Christian Streifer, based on Office 2016 Code by Author Dominik Daehn, based on Office 2013 Code by Jens Eppler, based on Office 2010 Code by Soren Birk
Die Setup.exe ist das Office Deployment Tool , das Skript beinhaltet Produkteigenschaften die zur Laufzeit in die office_config.xml geschrieben werden.
Microsoft hat mit dem Wechsel zu Office 2016/365 den Syntax der XML Configdatei geändert und ich habe diese angepasst.
Wichtig MS hat mit 2016/365 Office den Update Mechanismus geändert, nach meinem Wissen funktioniert WSUS nicht mehr mit diesen Produkten
The Setup.exe ist the Office Deployment Tool
Importent with my knowlege Updates via WSUS don`t work with Office 2016/365
Die Anleitung ist noch nicht fertig
├ office_config.xml ├ setup.exe ├ office365.png ├ setup.opsiscript ├ uninstall.opsiscript ├ 64 └ ... └ 32 └ ...
[Actions] requiredWinstVersion >= "4.11.3.5" DefVar $LogDir$ DefVar $ProductId$ DefVar $ProductName$ DefVar $OfficeId$ DefVar $OfficeVersion$ DefVar $MinimumSpace$ DefVar $InstallPfad$ DefVar $SystemType$ DefVar $OfficeArchitecture$ DefVar $Office_Source$ DefVar $Language$ DefVar $InstallPath$ DefVar $AutoActivate$ DefVar $ExitCode$ DefVar $Config_Product$ DefVar $Config_Eula$ DefVar $Config_Log$ DefVar $Config_Updates$ DefVar $UpdateChannel$ DefVar $UpdateSource$ DefVar $ACCESSFiles$ DefVar $EXCELFiles$ DefVar $GrooveFiles2$ DefVar $OUTLOOKFiles$ DefVar $PPTFiles$ DefVar $PubPrimary$ DefVar $WORDFiles$ DefVar $XDOCSFiles$ DefVar $LYNCFiles$ DefVar $ONENOTEFiles$ DefVar $ONEDRIVE$ DefVar $VISIOVIEWERFiles$ DefStringList $Products$ ; ---------------------------------------------------------------- ; - Please edit the following values - ; ---------------------------------------------------------------- Set $LogDir$ = "%SystemDrive%\tmp" Set $ProductId$ = "office2016" Set $ProductName$ = "Office 365 Professional Plus" Set $OfficeId$ = GetProductProperty("officeid","O365ProPlusRetail") Set $MinimumSpace$ = "3 GB" Set $SystemType$ = GetSystemType Set $OfficeArchitecture$ = GetProductProperty("architecture","32") Set $InstallPath$ = GetProductProperty("Installationsdateien","%SystemDrive%\tmp") Set $UpdateSource$ = '\\' + GetProductProperty("Updatedateien","") + '\' + $OfficeArchitecture$ ;Variablen zum patchen der config.xml Set $Office_Source$ = '<Add OfficeClientEdition="' + $OfficeArchitecture$ + '" Channel="' + GetProductProperty("Updatekanal","Broad") + '" SourcePath="' + $InstallPath$ + '">' Set $Config_Product$ = '<Product ID="' + $OfficeId$ + '">' Set $Language$ = '<Language ID="' + GetProductProperty("Sprache","de-de") + '" />' Set $Config_Eula$ = '<Display Level="' + GetProductProperty("Installations_Status_MS", "Full") + '" AcceptEula="True" />' Set $Config_Log$ = '<Logging Level="Standard" Path="' + $LogDir$ + '" />' Set $Config_Updates$ = '<Updates Enable="' + GetProductProperty("Updates", "True") + '" Channel="' + GetProductProperty("Updatekanal","Broad") + '" UpdatePath="' + $UpdateSource$ + '" />' Set $AutoActivate$ = '<Property Name="AUTOACTIVATE" Value="' + GetProductProperty("Auto_Aktivierung", "0") + '" />' Set $Products$ = GetProductPropertyList("products","True") Set $ACCESSFiles$ = takeFirstStringContaining($Products$, "Access") Set $EXCELFiles$ = takeFirstStringContaining($Products$, "Excel") Set $GrooveFiles2$ = takeFirstStringContaining($Products$, "Groove") Set $OUTLOOKFiles$ = takeFirstStringContaining($Products$, "Outlook") Set $PPTFiles$ = takeFirstStringContaining($Products$, "PowerPoint") Set $PubPrimary$ = takeFirstStringContaining($Products$, "Publisher") Set $WORDFiles$ = takeFirstStringContaining($Products$, "Word") Set $LYNCFiles$ = takeFirstStringContaining($Products$, "Skype") Set $ONENOTEFiles$ = takeFirstStringContaining($Products$, "OneNote") Set $ONEDRIVE$ = takeFirstStringContaining($Products$, "OneDrive") Set $VISIOVIEWERFiles$ = takeFirstStringContaining($Products$, "VisioViewer") ; ---------------------------------------------------------------- if CompareDotSeparatedNumbers(GetMsVersionInfo,"6.0") < "0" LogError "This is for NT 6 (Vista) and above" isFatalError else if not ($ACCESSFiles$ = "") Set $ACCESSFiles$ = '' else Set $ACCESSFiles$ = '<ExcludeApp ID="Access" />' endif if not ($EXCELFiles$ = "") Set $EXCELFiles$ = '' else Set $EXCELFiles$ = '<ExcludeApp ID="Excel" />' endif if not ($GrooveFiles2$ = "") Set $GrooveFiles2$ = '' else Set $GrooveFiles2$ = '<ExcludeApp ID="Groove" />' endif if not ($OUTLOOKFiles$ = "") Set $OUTLOOKFiles$ = '' else Set $OUTLOOKFiles$ = '<ExcludeApp ID="Outlook" />' endif if not ($PPTFiles$ = "") Set $PPTFiles$ = '' else Set $PPTFiles$ = '<ExcludeApp ID="PowerPoint" />' endif if not ($PubPrimary$ = "") Set $PubPrimary$ = '' else Set $PubPrimary$ = '<ExcludeApp ID="Publisher" />' endif if not ($WORDFiles$ = "") Set $WORDFiles$ = '' else Set $WORDFiles$ = '<ExcludeApp ID="Word" />' endif if not ($LYNCFiles$ = "") Set $LYNCFiles$ = '' else Set $LYNCFiles$ = '<ExcludeApp ID="Lync" />' endif if not ($ONENOTEFiles$ = "") Set $ONENOTEFiles$ = '' else Set $ONENOTEFiles$ = '<ExcludeApp ID="OneNote" />' endif if not ($VISIOVIEWERFiles$ = "") Set $VISIOVIEWERFiles$ = '' else Set $VISIOVIEWERFiles$ = '<ExcludeApp ID="Visio" />' endif if not ($ONEDRIVE$ = "") Set $ONEDRIVE$ = '' else Set $ONEDRIVE$ = '<ExcludeApp ID="OneDrive" />' endif if not(HasMinimumSpace ("%SystemDrive%", $MinimumSpace$)) LogError "Not enough space on %SystemDrive%, " + $MinimumSpace$ + " on dirve %SystemDrive% is needed for " + $ProductId$ isFatalError "Not enough space" else comment "Display product logo" ShowBitmap "%ScriptPath%\" + $ProductId$ + ".png" $ProductName$ if ($OfficeArchitecture$ = "64") AND ($SystemType$ = "x86 System") Set $OfficeArchitecture$ = "32" comment "Wechsel Office Architekture zu Office x86" endif comment "Kopiere Installations Dateien" Message "Kopiere Installations Dateien für " + $OfficeArchitecture$ + "Bit ..." Files_copy_installfiles comment "Kopiere leere config.xml nach $LogDir$" Files_copy_patchtextfile comment "Patching config.xml" PatchTextFile_config_xml $LogDir$ + "\office_config.xml" Message "Installiere " + $ProductId$ + " ..." comment "Starte Setup Program" ChangeDirectory "%SCRIPTPATH%" Winbatch_install Sub_check_exitcode comment "Räume auf" Files_clean_installfiles endif endif [Files_copy_installfiles] copy -s "%ScriptPath%\$OfficeArchitecture$\*.*" "%SystemDrive%\tmp" [Files_copy_patchtextfile] copy "%ScriptPath%\office_config.xml" $LogDir$ [Files_clean_installfiles] delete -s "%SystemDrive%\tmp\Office" [PatchTextFile_config_xml] FindLine "</Configuration>" InsertLine ' $Config_Log$' InsertLine ' $AutoActivate$' InsertLine ' $Config_Eula$' InsertLine ' $Config_Updates$' InsertLine ' </Add>' InsertLine ' </Product>' InsertLine ' $ONEDRIVE$' InsertLine ' $LYNCFiles$' InsertLine ' $ONENOTEFiles$' InsertLine ' $VISIOVIEWERFiles$' InsertLine ' $WORDFiles$' InsertLine ' $PubPrimary$' InsertLine ' $PPTFiles$' InsertLine ' $OUTLOOKFiles$' InsertLine ' $GrooveFiles2$' InsertLine ' $EXCELFiles$' InsertLine ' $ACCESSFiles$' InsertLine ' $Language$' InsertLine ' $Config_Product$' InsertLine ' $Office_Source$' InsertLine '<Configuration>' [Winbatch_install] "%ScriptPath%\setup.exe" /configure "$LogDir$\office_config.xml" [Sub_check_exitcode] comment "Test for installation success via exit code" set $ExitCode$ = getLastExitCode ; informations to exit codes see ; http://msdn.microsoft.com/en-us/library/aa372835(VS.85).aspx ; http://msdn.microsoft.com/en-us/library/aa368542.aspx if ($ExitCode$ = "0") comment "Looks good: setup program gives exitcode zero" else comment "Setup program gives a exitcode unequal zero: " + $ExitCode$ if ($ExitCode$ = "1605") comment "ERROR_UNKNOWN_PRODUCT 1605 This action is only valid for products that are currently installed." comment "Uninstall of a not installed product failed - no problem" else if ($ExitCode$ = "1641") comment "looks good: setup program gives exitcode 1641" comment "ERROR_SUCCESS_REBOOT_INITIATED 1641 The installer has initiated a restart. This message is indicative of a success." else if ($ExitCode$ = "3010") comment "looks good: setup program gives exitcode 3010" comment "ERROR_SUCCESS_REBOOT_REQUIRED 3010 A restart is required to complete the install. This message is indicative of a success." else logError "Fatal: Setup program gives an unknown exitcode unequal zero: " + $ExitCode$ isFatalError endif endif endif endif
</Configuration> <!-- Config Datei wird durch OPSI dynamisch generiert ... don't edit !!! -->
[Actions] requiredWinstVersion >= "4.11.3.5" DefVar $LogDir$ DefVar $ProductId$ DefVar $ProductName$ DefVar $OfficeId$ DefVar $MinimumSpace$ DefVar $InstallDir$ DefVar $InstallPfad$ DefVar $SystemType$ DefVar $Config_Product$ DefVar $Language$ DefVar $ExitCode$ ; ---------------------------------------------------------------- ; - Please edit the following values - ; ---------------------------------------------------------------- Set $LogDir$ = "%SystemDrive%\tmp" Set $ProductId$ = "office2016" Set $ProductName$ = "Office 2016 Professional Plus" Set $OfficeId$ = GetProductProperty("officeid","O365ProPlusRetail") Set $InstallDir$ = "Microsoft Office" Set $SystemType$ = GetSystemType ;Variablen zum patchen der office_remove.xml Set $Config_Product$ = '<Product ID="' + $OfficeId$ + '" >' Set $Language$ = '<Language ID="' + GetProductProperty("Sprache","de-de") + '" />' ; ---------------------------------------------------------------- if CompareDotSeparatedNumbers(GetMsVersionInfo,"6.0") < "0" LogError "This is for NT 6 (Vista) and above" isFatalError else comment "Display product logo" ShowBitmap "%ScriptPath%\" + $ProductId$ + ".png" $ProductName$ comment "Kopiere leere config.xml nach $LogDir$" Files_copy_patchtextfile comment "Patching office_config.xml" PatchTextFile_remove_xml $LogDir$ + "\office_config.xml" Message "Installiere " + $ProductId$ + " ..." comment "Start setup program" ChangeDirectory "%SCRIPTPATH%" Winbatch_remove endif [Files_copy_patchtextfile] copy "%ScriptPath%\office_config.xml" $LogDir$ [PatchTextFile_remove_xml] FindLine "</Configuration>" InsertLine ' </Remove>' InsertLine ' </Product>' InsertLine ' $Language$' InsertLine ' $Config_Product$' InsertLine ' <Remove ALL="True">' InsertLine '<Configuration>' [Winbatch_remove] "%ScriptPath%\setup.exe" /configure "$LogDir$\office_config.xml"
[Package] version: 1 depends: incremental: False [Product] type: localboot id: office2016 name: Office 2016 description: Office 2016 advice: version: 1.0 priority: 0 licenseRequired: False productClasses: setupScript: setup.opsiscript uninstallScript: uninstall.opsiscript updateScript: alwaysScript: onceScript: customScript: userLoginScript: [ProductProperty] type: unicode name: architecture multivalue: False editable: False description: Architektur der Office Installation x86 oder x64 values: ["32", "64"] default: ["32"] [ProductProperty] type: unicode name: officeid multivalue: False editable: True description: Produkt-ID für die Office 365 Installation values: ["O365ProPlusRetail", "O365BusinessRetail", "VisioProRetail", "ProjectProRetail", "SPDRetail", "AccessRuntimeRetail"] default: ["O365ProPlusRetail"] [ProductProperty] type: unicode name: Sprache multivalue: False editable: True description: Definiert die Sprache, die installiert werden soll values: ["de-de"] default: ["de-de", "MatchOS"] [ProductProperty] type: unicode name: Updatekanal multivalue: False editable: True description: Für die Office 2016-Version von Office 365 ProPlus bietet Microsoft drei Optionen, die als Updatekanäle bezeichnet werden und Ihnen helfen zu steuern, wie oft Office 365 ProPlus mit neuen Funktionen aktualisiert wird. values: ["Monthly", "Broad", "Targeted"] default: ["Broad"] [ProductProperty] type: unicode name: Updates multivalue: False editable: False description: Office sucht nach Updates. values: ["True", "False"] default: ["True"] [ProductProperty] type: unicode name: Installationsdateien multivalue: False editable: True description: Speicherort der Installationsdateien values: ["c:\tmp"] default: ["c:\tmp"] [ProductProperty] type: unicode name: Updatedateien multivalue: False editable: True description: Speicherort der Updatedateien values: ["%opsiDepotId%"] default: ["%opsiDepotId%"] [ProductProperty] type: unicode name: Auto_Aktivierung multivalue: False editable: False description: Wenn der Wert auf 1 gesetzt ist, werden Office 365 automatisch aktiviert. values: ["0", "1"] default: ["1"] [ProductProperty] type: unicode name: Installations_Status_MS multivalue: False editable: False description: Wenn Level auf None festgelegt ist, wird Office ohne Benutzeroberfläche installiert: Es werden keine Statusanzeigen, Fertigstellungsbildschirme, Fehlermeldungen oder sonstige Benutzeroberflächen angezeigt. values: ["None", "Full"] default: ["None"] [ProductProperty] type: unicode name: products multivalue: True editable: False description: welche Produkte installiert werden sollen values: ["Access", "Excel", "OneDrive", "OneNote", "Outlook", "PowerPoint", "Publisher", "Skype", "VisioViewer", "Word"] default: ["Access", "Excel", "OneNote", "PowerPoint", "Publisher", "VisioViewer", "Word"] [ProductDependency] action: setup requiredProduct: office2010pro requiredAction: uninstall requirementType: before