ConfigMgr: .Net 3.5 für Windows 2012 R2 verteilen

Anbei ein kleines Script, um für Windows 2012 R2 das .Net Framework 2-3.5 nachzuinstallieren. Dafür ist der SXS von der Installations-CD notwendig. Dafür wird die OS Language ausgelesen und verwendet, um das passende SXS Verzeichnis zu verwenden.
Somit legt man für jede notwendige Betriebssystemsprache ein Unterordner mit Namen des Laguage Codes (1031 für deutsch, 1033 für englisch, …) an und kopiert den Inhalt des jeweiligen SXS Ordners dort hinein.
Als Vergleichsfile habe ich willkürlich das microsoft.build.tasks.v3.5.dll genommen. Dies ist aber in diesem Fall nicht weiter relevant.
(Anmerkung: Ich habe den Produktnamen bewusst gekürzt, da es sonst bei den SXS Ordner beim Kopieren in die Zielordner zu Dateilängen über 256 Zeichen komme und das normale Powershell Kopierkommando damit nicht zurecht kommt)

<appdefinition>
<file>microsoft.build.tasks.v3.5.dll</file>
<hash type="SHA256">DDC3B09E15C565FA1E10562FE0FF13FB4612D5F486362A58E4EDE65E13FEE7C5</hash>
<info>
    <company>Microsoft Corporation</company>
    <productName>NET Framework</productName>
    <productVersion>3.5</productVersion>
    <setupType>NSIS</setupType>
    <isX86>false</isX86>
    <hasUninstall>true</hasUninstall>
</info>
<install>
Show-InstallationProgress -StatusMessage "Installing $appName . This may take some time. Please wait..."
$osLanguage=(get-wmiobject Win32_OperatingSystem).osLanguage
Execute-Process -Path "dism.exe" -Parameters "/online /enable-feature /featurename:NetFX3 /all /Source:$dirFiles\$osLanguage /LimitAccess /LogPath:$configToolkitLogDir\$installName-dism.log"
</install>
<uninstall>
Show-InstallationProgress -StatusMessage "Uninstalling $appName. This may take some time. Please wait..."
Execute-Process -Path "dism.exe" -Parameters "/online /disable-feature /featurename:NetFX3 /LimitAccess /LogPath:$configToolkitLogDir\$installName-dism-remove.log"
</uninstall>
<detection>
$regPath="HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5\*"
if (test-path $regPath) {Get-ItemProperty $regPath | where {$_.Install -eq 1}}
</detection>
<supersedence>
</supersedence>
</appdefinition>
Posted in automateAppDeployment, Configuration Manager, Deutsch, System Center, System Center 2012 | Tagged , , | 1 Comment

ConfigMgr: .Net 4.6.1 mit KB3102436 verteilen

Anbei das Script für das .Net Framework 4.6.1. Heruntergeladen werden kann der Offline-Installer unter https://www.microsoft.com/en-US/download/details.aspx?id=49982.

<appdefinition>
<file>NDP461-KB3102436-x86-x64-AllOS-ENU.exe</file>
<hash type="SHA256">BEAA901E07347D056EFE04E8961D5546C7518FAB9246892178505A7BA631C301</hash>
<info>
    <company>Microsoft Corporation</company>
    <setupType>NSIS</setupType>
    <isX86>false</isX86>
    <hasUninstall>true</hasUninstall>
</info>
<install>
Show-InstallationProgress -StatusMessage "Installing $appName . This may take some time. Please wait..."
Execute-Process -Path "NDP461-KB3102436-x86-x64-AllOS-ENU.exe" -Parameters "/q /norestart"
</install>
<uninstall>
Show-InstallationProgress -StatusMessage "Uninstalling $appName. This may take some time. Please wait..."
Execute-Process -Path "NDP461-KB3102436-x86-x64-AllOS-ENU.exe" -Parameters "/uninstall /x86 /x64 /q /norestart"
</uninstall>
<detection>
$regPath="HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\*"
Get-ItemProperty $regPath | where {$_.Release -gt 393297}
</detection>
<supersedence>
</supersedence>
</appdefinition>
Posted in automateAppDeployment, Configuration Manager, Deutsch, System Center | Tagged | Leave a comment

Adobe Reader Build 30201

Auch der Acrobat Reader in der 2015 Version (nicht die “Cloud” Variante DC) wurde auf Build 30201 aktualisiert. Dafür stellt Adobe eine passende Patch-Datei (MSP) bereit. Dieses Verteilscript setzt somit auf die vollständige Version von Adobe Reader 2015 auf (=dependency),

<appdefinition>
<file>AcroRdr2015Upd1500630201_MUI.msp</file>
<hash type="SHA256">A7E71B976CD51C9A92F481BD4BCF8DD12260E522D8858C46B990BA50F56427A8</hash>
<info fromFile="true">
<company>Adobe Systems Incorporated</company>
<productName>Adobe Reader 2015</productName>
<productVersion>15.006.30201</productVersion>
<setupType>MSP</setupType>
<isX86>true</isX86>
</info>
<install fromSetupType="false">
Execute-MSI -Action Patch -Path "AcroRdr2015Upd1500630201_MUI.msp" -Parameters "REBOOT=ReallySuppress /qn"
#disable arm
$regPrefix="HKEY_LOCAL_MACHINE\SOFTWARE\"
if ($is64Bit) {
 $regPrefix="HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\"
}
set-registryKey -Key ($regPrefix+"Adobe\Adobe ARM\1.0\ARM") -Name "iCheckReader" -value 0 -Type "DWord"
#remove run key
$runKey="HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"
$run=Get-Item $runKey
$runValue="Adobe ARM"
if ($run.GetValue($runValue,$null)) {
	remove-itemProperty -Path $runKey -Name $runValue
}
if ($is64Bit) {
$runKey="HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run"
$run=Get-Item $runKey
if ($run.GetValue($runValue,$null)) {
	remove-itemProperty -Path $runKey -Name $runValue
}
}
#disable online features
#http://www.adobe.com/devnet-docs/acrobatetk/tools/PrefRef/Windows/FeatureLockdown.html
#new: http://www.adobe.com/devnet-docs/acrobatetk/tools/AdminGuide/services.html
$regPath=($regPrefix+"Policies\Adobe\Acrobat Reader\2015\FeatureLockDown")
set-registryKey -Key $regPath -Name "bUsageMeasurement" -value 0 -Type "DWord"
set-registryKey -Key $regPath -Name "bShowEbookMenu" -value 0 -Type "DWord"
set-registryKey -Key $regPath -Name "bShowEbookMenu" -value 0 -Type "DWord"
set-registryKey -Key $regPath -Name "bCommercialPDF" -value 0 -Type "DWord"
set-registryKey -Key $regPath -Name "bUpdater" -value 0 -Type "DWord"
set-registryKey -Key $regPath -Name "bCreatePDFOnline" -value 0 -Type "DWord"
set-registryKey -Key $regPath -Name "bPurchaseAcro" -value 0 -Type "DWord"
#Specifies whether to show the menu item that opens the online Actions file library.
set-registryKey -Key $regPath -Name "bFindMoreWorkflowsOnline" -value 0 -Type "DWord"
#Specifies whether to show the menu item that opens the online Acrobat Tool Set Exchange.
set-registryKey -Key $regPath -Name "bFindMoreCustomizationsOnline" -value 0 -Type "DWord"
#This bEnableAcrobatHS service master switch disables all features of the Fill and Sign Pane except for the Work with Certificates accordion. When forms are opened, the Fill and Sign Pane does not auto open.
set-registryKey -Key $regPath -Name "bEnableAcrobatHS" -value 0 -Type "DWord" 
#Don't allow file storage on Acrobat.com.
set-registryKey -Key ($regPath+"\cCloud") -Name "bDisableADCFileStore" -value 1 -Type "DWord"

#disable protected mode...
set-registryKey -Key $regPath -Name "bProtectedMode" -value 0 -Type "DWord"
</install>
<uninstall/>
<detection/>
<dependency>
	<dependencyGroup name="Acrobat Reader 2015">
		<application autoInstall="true" type="SHA256">2C374210AF21AE7ABAA4A5DE12B2C9A84E4942E94167B95E218FF27D072AB8BC</application>
	</dependencyGroup>
</dependency>
<supersedence>
	<deploymentType uninstall="false" type="SHA256">934A4DB4EFE7B825378177BDED26D889A27B19D3A0AD06D2D37A93896B1FF326</deploymentType><!--Build 30119--> 
	<deploymentType uninstall="false" type="SHA256">345351B04EE45E85194126AE0884A0B8AAC5DCEDA34D42AB18F3E6413C8D41F9</deploymentType><!--Build 30121-->
</supersedence>
</appdefinition>
Posted in automateAppDeployment, Configuration Manager, Deutsch, System Center | Tagged , | 1 Comment

ConfigMgr: 7Zip 16.02 verteilen

Scheinbar habe ich mein Script für 7-Zip 16.02 übersehen zu veröffentlichen:

<appdefinition>
<file>7z1602-x64.exe</file>
<hash type="SHA256">F1601B09CD0C9627B1AAB7299B83529E8FBC6B5078E43DFD81A1B0BFCDF4A308</hash>
<info>
    <company>Igor Pavlov</company>
    <setupType>NSIS</setupType>
    <isX86>false</isX86>
    <hasUninstall>true</hasUninstall>
</info>
<install/>
<uninstall>
Show-InstallationProgress -StatusMessage "Uninstalling 7-Zip 16.02. This may take some time. Please wait..."
$regPath="HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*"
$uninstallApp=(Get-ItemProperty $regPath | where {$_.DisplayName -like "*7-Zip 16.02*"}).UninstallString.replace("`"","")
Execute-Process -Path "$uninstallApp" -Parameters "/S" -WindowStyle Hidden
</uninstall>
<detection>
$regPath="HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*"
Get-ItemProperty $regPath | where {$_.DisplayName -like "*7-Zip 16.02*"}
</detection>
<supersedence>
<deploymentType uninstall="false" type="SHA256">80BAA787724BF9BE9F6D2C3B42CBC2124CFA662DB081E2A5F885BFA60389D6FF</deploymentType><!--15.14-->
</supersedence>
</appdefinition>
Posted in automateAppDeployment, Configuration Manager, Deutsch, System Center | Tagged , | 1 Comment

ConfigMgr: Java 8 Update 101

Anbei das aktualisierte Installationsscript für Java 8u101:

<appdefinition>
<file>jre-8u101-windows-i586.exe</file>
<hash type="SHA256">8FAC3FBB9E854BCEE12049430E9EF67188C6389B46C67120E873CDF173B3C3B9</hash>             
<info>
	<setupType>InnoSetup</setupType>
	<isX86>true</isX86>
	<company>Oracle Corporation</company>
	<productName>Java 8 Update 101</productName>
	<msiProductCode>{26A24AE4-039D-4CA4-87B4-2F32180101F0}</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-8u101-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-2F32180101F0}"
</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-2F32180101F0}" -and $_.DisplayVersion -eq "8.0.1010.13" -and $_.WindowsInstaller -eq 1}
</detection>
<dependency>
</dependency>
<supersedence>
<deploymentType uninstall="true" type="SHA256">67C9594D2A51D6B1B52CC57CD7E1B320B491207C3680F811354185B71ED4D832</deploymentType>
<deploymentType uninstall="true" type="SHA256">8371F27009A9286CAC0D9812E0411DDBFCB106456E46FFEC50E64054E75E4632</deploymentType>
<deploymentType uninstall="true" type="SHA256">E4E54109C3FB40A36457B4EAC5C53D667A9969826EB16157B0DC4A2D3DCEAC23</deploymentType>
<deploymentType uninstall="true" type="SHA256">41F1887CBC9446720B26F51B9EDD6034D535A2F844A6E37646333F7799F35809</deploymentType>
<deploymentType uninstall="true" type="SHA256">3CC0BE2A34F0989692C30F2CACB89CACFCA7159570D5FC8C1B1498C60CBC07FB</deploymentType><!--71-->
</supersedence>
</appdefinition>
Posted in automateAppDeployment, Configuration Manager, Deutsch, System Center | Tagged , , , | 1 Comment