ConfigMgr: JRE 8u71 verteilen

Update 20160130: Im Script fehlte ein kleiner Teil, daher war die Verteilung nicht in jedem Fall erfolgreich. Dies ist jetzt angepasst.

Nachdem ich im letzten Post die Verteilung von 8u66 beschrieben habe, schiebe ich direkt die Verteilung vom aktuellen 8u71 hinterher. Wie gewünscht ist es hauptsächlich das Austauschen der EXE und Anpassen der Filenamen bzw. GUIDs und Versionsnummern.

<appdefinition>
<file>jre-8u71-windows-i586.exe</file>
<hash type="SHA256">3CC0BE2A34F0989692C30F2CACB89CACFCA7159570D5FC8C1B1498C60CBC07FB</hash>             
<info>
	<setupType>InnoSetup</setupType>
	<isX86>true</isX86>
	<company>Oracle Corporation</company>
	<productName>Java 8 Update 71</productName>
	<msiProductCode>{26A24AE4-039D-4CA4-87B4-2F83218071F0}</msiProductCode>
</info>
<install>
Show-InstallationProgress -StatusMessage 'Installing Java JRE. This may take some time. Please wait...'
$path=join-path (join-path $env:programdata 'Oracle') 'Java'
if ((Test-Path $path) -eq $false) {
   New-Item -Type Directory $path |out-null
}
new-item -type File (join-path $path 'java.settings.cfg') -force | out-null
if ($is64Bit) {
	$path=join-path $envWinDir "System32\config\systemprofile\AppData\LocalLow\Oracle"
	$symName=join-path $envWinDir "SysWOW64\config\systemprofile\AppData\LocalLow\Oracle"
	if  (Test-Path $symname) {
		remove-Item -Recurse -Path $symName
	}
	if (-not (Test-Path $path)) {
		new-item -ItemType Directory -Path $path
	}
	#Quelle: https://gallery.technet.microsoft.com/scriptcenter/New-SymLink-60d2531e
	        Try {
	            $null = [mklink.symlink]
	        } Catch {
	            Add-Type @"
	            using System;
	            using System.Runtime.InteropServices;
	 
	            namespace mklink
	            {
	                public class symlink
	                {
	                    [DllImport("kernel32.dll")]
	                    public static extern bool CreateSymbolicLink(string lpSymlinkFileName, string lpTargetFileName, int dwFlags);
	                }
	            }
"@
	        }
	            Try {
	                $return = [mklink.symlink]::CreateSymbolicLink($SymName,$Path,1)
	            } Catch {
	            }
}

Execute-Process -Path "jre-8u71-windows-i586.exe" -Parameters "/s INSTALL_SILENT=Enable AUTO_UPDATE=Disable WEB_JAVA=Disable WEB_ANALYTICS=Disable REBOOT=Disable NOSTARTMENU=Enable SPONSORS=Disable" -WindowStyle Hidden
</install>
<uninstall>
Execute-MSI -Action Uninstall -Path "{26A24AE4-039D-4CA4-87B4-2F83218071F0}"
</uninstall>
<detection>
if ([IntPtr]::Size -eq 8) {$regPath="HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*"} else { $regPath="HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*"}
Get-ItemProperty $regPath | where {$_.psChildname -like "{26A24AE4-039D-4CA4-87B4-2F83218071F0}" -and $_.DisplayVersion -eq "8.0.710.15" -and $_.WindowsInstaller -eq 1}
</detection>
</appdefinition>

 

Posted in automateAppDeployment, Configuration Manager, Deutsch, Powershell, System Center | Tagged , , , | 1 Comment

ConfigMgr: JRE 8u66 verteilen

Seit längerem stört es mich, dass man für die JRE Verteilung immer noch das MSI File extrahieren muss. Das macht den Sinn vom AutomaticAppDeployment kaputt, da mehr manuelle Schritte notwendig sind.

Ursache dafür ist ein alter Bug im Oracle JRE Setup, der Probleme mit der Installation im SYSTEM Kontext von 32bit Java unter x64 Betriebssystemen hat. Der Bug ist u.a. hier dokumentiert: http://bugs.java.com/bugdatabase/view_bug.do?bug_id=7014194

Angeblich ist der Fehler bereits in 8u51 behoben. Meine Realität sieht aber anders aus.

Ein guter Workaround ist in folgendem Technet Thread beschrieben:

https://social.technet.microsoft.com/Forums/de-DE/8dc5f284-a9a1-409b-8656-87e265ae652c/problem-with-java-18-update-31-deployment?forum=configmanagerapps

Diese Hardlinks im Dateisystem habe ich in dem nachfolgenden applicationDeployment Script genutzt (basierende auf dem Powershell Code von hier https://gallery.technet.microsoft.com/scriptcenter/New-SymLink-60d2531e)

Dadurch kann direkt die EXE installiert werden.

<appdefinition>
<file>jre-8u66-windows-i586.exe</file>
<hash type="SHA256">67C9594D2A51D6B1B52CC57CD7E1B320B491207C3680F811354185B71ED4D832</hash>
<info>
    <setupType>InnoSetup</setupType>
    <isX86>true</isX86>
    <company>Oracle Corporation</company>
    <productName>Java 8 Update 66</productName>
    <msiProductCode>{26A24AE4-039D-4CA4-87B4-2F83218066F0}</msiProductCode>
</info>
<install>
Show-InstallationProgress -StatusMessage 'Installing Java JRE. This may take some time. Please wait...'
if ($is64Bit) {
    $path=join-path $envWinDir "\System32\config\systemprofile\AppData\LocalLow\Oracle"
    $symName=join-path $envWinDir "SysWOW64\config\systemprofile\AppData\LocalLow\Oracle"
    if  (Test-Path $symname) {
        remove-Item -Recurse -Path $symName
    }
    if (-not (Test-Path $path)) {
        new-item -ItemType Directory -Path $path
    }
    #Quelle: https://gallery.technet.microsoft.com/scriptcenter/New-SymLink-60d2531e
            Try {
                $null = [mklink.symlink]
            } Catch {
                Add-Type @"
                using System;
                using System.Runtime.InteropServices;
     
                namespace mklink
                {
                    public class symlink
                    {
                        [DllImport("kernel32.dll")]
                        public static extern bool CreateSymbolicLink(string lpSymlinkFileName, string lpTargetFileName, int dwFlags);
                    }
                }
"@
            }
                Try {
                    $return = [mklink.symlink]::CreateSymbolicLink($SymName,$Path,1)
                } Catch {
                }
}

Execute-Process -Path "jre-8u66-windows-i586.exe" -Parameters "/s INSTALL_SILENT=Enable AUTO_UPDATE=Disable WEB_JAVA=Disable WEB_ANALYTICS=Disable REBOOT=Disable NOSTARTMENU=Enable SPONSORS=Disable" -WindowStyle Hidden
</install>
<uninstall>
Execute-MSI -Action Uninstall -Path "{26A24AE4-039D-4CA4-87B4-2F83218066F0}"
</uninstall>
<detection>
if ([IntPtr]::Size -eq 8) {$regPath="HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*"} else { $regPath="HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*"}
Get-ItemProperty $regPath | where {$_.psChildname -like "{26A24AE4-039D-4CA4-87B4-2F83218066F0}" -and $_.DisplayVersion -eq "8.0.660.18" -and $_.WindowsInstaller -eq 1}
</detection>
</appdefinition>
Posted in Configuration Manager, System Center | Tagged , , , , , | Leave a comment

Danke für den MVP Award für 2016!

Zu meiner Überraschung habe ich am 1.1.2016 folgende Email erhalten:

image

Ich nehme dies als Ansporn mehr Energie in meine Community Kanäle zu legen!

Related posts

Posted in Deutsch, English | Leave a comment

Consumerization of IT – Revisited

Anfang 2014 habe ich in Channel9 eine kleinen Überblick über “Consumerization of IT” gegeben: https://channel9.msdn.com/Series/Ein-Ueberblick-ueber-Consumerization-of-IT/Was-ist-Consumerization-of-IT-

Wie stellt sich das damals skizzierte Bild von Microsoft Technologien heute dar?

Präsentation1

Zentraler Angelpunkt aller Aktivitäten sollten immer noch die Daten sein. Daher habe ich schon damals viel Augenmerk auf AD RMS gelegt. Mittlerweile wurde es durch einen Azure Dienst namens Azure Rights Management ergänzt. Durch die Integration in Azure AD und eines On-Premise Connectors wird der Austausch mit anderen Firmen deutlich vereinfacht, da keine individuellen Trusts zwischen Firmen erzeugt werden müssen. Durch die Verwendung von RMS for Individuals kann darüber hinaus ein sicherer Austausch von Dokumenten auch mit Personen erfolgen, die keinen Zugang zu kostenpflichtigen Azure Diensten haben.

Nicht jedem ist wohl dabei, dass der zentrale Schlüssel zum Entschlüsseln aller Dokumente in der Cloud liegt. Daher bietet Microsoft mittlerweile auch ein BYOK (Bring your own key) an, bei dem der Schlüssel in einem speziellen Thales Hardware Security Module (HSM) abgelegt wird.

Die BYOD Szenarien wurden durch Conditional Access ergänzt. Dabei kann vor dem Zugriff auf ein Exchange Postfach (Office365 oder On Premise) kontrolliert werden, ob das Device bekannt ist und der Zugriff erlaubt ist.

Durch den Kauf von Acompli und der daraus resultierenden Apps Outlook for iOS und Android wurde die Basis geschaffen, dass InTune jetzt auch eine MAM (mobile application management) Möglichkeit besitzt. Eine Liste der aktuell unterstützten Apps ist hier zu finden: https://technet.microsoft.com/en-us/library/dn708489.aspx.

Weitere Apps könnte mithilfe eines Wrapping Tools selber verpackt und verteilt werden. Dadurch erweitern sich die Selective Wipe und Datenflusskontrollmöglichkeiten deutlich, da durch Policies für die Apps definiert werden kann, was mit Firmendaten gemacht werden kann (Copy&Paste in unsichere Apps, Weiterleiten, Speichern unter, Verhinderung von Datensicherungen, Schutz der Anwendung durch eine extra PIN…).

Auch im Bereich Remote Desktop Services kann die VM jetzt in die Cloud gebracht werden. Der Dienst Azure RemoteApp ermöglicht die Bereitstellung von Anwendungen aus einer Azure VM heraus. Dabei kann die Umgebung automatisch je nach Anzahl der parallelen User skalieren. Durch die Verwendung von VNET ist eine hybride Lösung möglich, bei der die Benutzer auf Unternehmensdaten über eine VPN Verbindung zugreifen können.

Wie man sieht, bleib das Thema Consumerization of IT auch im Rahmen von Cloud weiterhin spannend und es stehen noch einige weitere spannende Neuerungen vor der Tür!

Posted in Configuration Manager, Deutsch, Intunes, System Center | Tagged , , | Leave a comment

automateAppDeployment – Version 0.5

Das Toolkit zum automatischen Erstellen von Verteilungen im ConfigMgr ist jetzt in der Version 0.5 verfügbar.

Folgende Punkte haben sich geändert:

  • 0.5    – 2015-09-29
  • NEW: MSI Product Code kann ebenfalls überschrieben werden (z.B. beim Mumble Client)
  • BUG: Fehler im InnoSetup Powershell Code korrigiert.
  • NEW: GlobalDef Variable, um nur die Dateien anzulegen und keine ConfigMgr Integration durchzuführen.
  • BUG: Falls der Files Ordner im Template noch nicht existiert, scheiterte das Kopieren.
  • BUG: Bei der neuen AppDeploymentToolkit Version wurde die Abschlussmeldung nicht mehr entfernt.
  • NEW: Es wird jetzt der Hash Value ausgewertet und verglichen. Im Differenzfall wird das Erstellen abgebrochen. Dies kann mit -ignoreHashError abgeschaltet werden.
automateAppDeployment (Version 0.5) (1121 downloads )
Posted in automateAppDeployment, Configuration Manager, Deutsch, Powershell, System Center, System Center 2012 | Tagged , , , | Leave a comment