This is an old revision of the document!
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 Setupdatei geändert und ich habe diese angepast. Der Download von den Setupdateien um von diesen lokal zu installieren hat interne Gründe.
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 the Updates via WSUS don`t work with Office 2016/365
Die Anleitung ist noch nicht fertig mehr morgen!!
├ 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 $InstallDir$ DefVar $InstallPfad$ DefVar $SystemType$ DefVar $OfficeArchitecture$ DefVar $Office_Source$ DefVar $Language$ DefVar $InstallPath$ DefVar $AutoActivate$ DefVar $LicenseRequired$ DefVar $LicensePool$ DefVar $UninstallProgram$ DefVar $UninstCmd$ DefVar $ExitCode$ DefVar $exitcodeActivation$ 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 2016 Professional Plus" Set $OfficeId$ = GetProductProperty("officeid","O365ProPlusRetail") Set $MinimumSpace$ = "3 GB" Set $InstallDir$ = "Microsoft Office" Set $SystemType$ = GetSystemType Set $OfficeArchitecture$ = GetProductProperty("architecture","32") Set $InstallPath$ = GetProductProperty("Installationsdateien","%SystemDrive%\tmp") Set $UpdateSource$ = '\\' + GetProductProperty("Updatedateien","") + '\' + $OfficeArchitecture$ ;Variablen zum patchen der office_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="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" /config "$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 "</Remove>" InsertLine ' </Product>' InsertLine ' $Language$' InsertLine ' $Config_Product$' InsertLine '<Remove ALL="True">' [Winbatch_remove] "%ScriptPath%\setup.exe" /configure "$LogDir$\office_config.xml"
[Package] version: 1 depends: incremental: False [Product] type: localboot id: office2016 name: Office 365 description: Office 365 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, MatchOS nimmt die System sprache 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 365 sucht nach Updates. values: ["True", "False"] default: ["True"] [ProductProperty] type: unicode name: Installationsdateien multivalue: False editable: True description: Speicherort der Installationsdateien values: ["%SystemDrive%\tmp"] default: ["%SystemDrive%\tmp"] [ProductProperty] type: unicode name: Updatedateien multivalue: False editable: True description: Speicherort der Updatedateien values: ["\\server\share"] default: [""] [ProductProperty] type: unicode name: Auto_Aktivierung multivalue: False editable: False description: Sie AUTOACTIVATE auf 1 einstellen, damit das Produkt automatisch aktiviert wird values: ["0", "1"] default: ["1"] [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"]