Programme automatisch installieren nach Installation

Probleme mit der Installation von Windows 11?
Benutzeravatar
Holgi
Elite
Elite
Beiträge: 2882
Registriert: 12.05.2018, 12:33
Hat sich bedankt: 364 Mal
Danke erhalten: 463 Mal
Gender:

Re: Programme automatisch installieren nach Installation

Beitrag von Holgi » 05.12.2024, 14:52

kaum hatte ich geschrieben:
"die Installation erfolgt über Winget mit --configure und einer angepassten Configuration.xml (ProPlus2024Volume.xml). Das funktioniert nur, wenn eine Internetverbindung während der Installation vorhanden ist, da die .xml auf einem eigenen FTP-Server liegt (müßte auch mit einer Fritz.Box gehen)."

dachte ich: warum eigentlich die Configuration.xml von extern beziehen? Zur Not muss die ebenfalls mit Echo Befehlen erstellt werden. > funktioniert!
der Winget Befehl sieht dann etwas anders aus, da die ProPlus2024VL.xml unter C:\Windows\Setup\Scripts erstellt wird:

Code: Alles auswählen

<SynchronousCommand wcm:action="add">
<Order>12</Order>
<Description>Office</Description>
<CommandLine>cmd /c winget install --id "Microsoft.Office" --override "/configure C:\Windows\Setup\Scripts\ProPlus2024VL.xml"</CommandLine>
</SynchronousCommand>
Die configuration.xml muss schon vorhanden sein, wenn winget das Office mit dieser installieren soll. Also wird sie unter "settings pass="specialize" erstellt:

Code: Alles auswählen

	<settings pass="specialize">
		<component name="Microsoft-Windows-Deployment" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS">
			<RunSynchronous>
				<RunSynchronousCommand wcm:action="add">
					<Order>91</Order>
					<Path>powershell.exe -NoProfile -Command "$xml = [xml]::new(); $xml.Load('C:\Windows\Panther\unattend.xml'); $sb = [scriptblock]::Create( $xml.unattend.Extensions.ExtractScript ); Invoke-Command -ScriptBlock $sb -ArgumentList $xml;"</Path>
				</RunSynchronousCommand>
				<RunSynchronousCommand wcm:action="add">
					<Order>92</Order>
					<Path>powershell.exe -NoProfile -Command "Get-Content -LiteralPath 'C:\Windows\Setup\Scripts\Specialize.ps1' -Raw | Invoke-Expression;"</Path>
				</RunSynchronousCommand>

			</RunSynchronous>
		</component>			
			
in Verbindung mit:

Code: Alles auswählen

	
		<File path="C:\Windows\Setup\Scripts\unattend-01.cmd" transformation="Text">
@Echo off
(
ECHO ^&lt;Configuration^&gt;
ECHO ^&lt;Add OfficeClientEdition="64" Channel="PerpetualVL2024" AllowCdnFallback="TRUE"^&gt;
ECHO     ^&lt;Product ID="ProPlus2024Volume" PIDKEY="XJ2XN-FW8RK-P4HMP-DKDBV-GCVGB"^&gt;
ECHO       ^&lt;Language ID="de-de" /^&gt;
ECHO       ^&lt;ExcludeApp ID="Access" /^&gt;
ECHO       ^&lt;ExcludeApp ID="Lync" /^&gt;
ECHO       ^&lt;ExcludeApp ID="OneDrive" /^&gt;
ECHO       ^&lt;ExcludeApp ID="OneNote" /^&gt;
ECHO       ^&lt;ExcludeApp ID="Outlook" /^&gt;
ECHO       ^&lt;ExcludeApp ID="SHARED" /^&gt;
ECHO       ^&lt;ExcludeApp ID="Publisher" /^&gt;
ECHO     ^&lt;/Product^&gt;
ECHO   ^&lt;/Add^&gt;
ECHO   ^&lt;Property Name="SharedComputerLicensing" Value="0" /^&gt;
ECHO   ^&lt;Property Name="FORCEAPPSHUTDOWN" Value="FALSE" /^&gt;
ECHO   ^&lt;Property Name="DeviceBasedLicensing" Value="0" /^&gt;
ECHO   ^&lt;Property Name="SCLCacheOverride" Value="0" /^&gt;
ECHO   ^&lt;Property Name="AUTOACTIVATE" Value="1" /^&gt;
ECHO   ^&lt;Updates Enabled="TRUE" /^&gt;
ECHO   ^&lt;RemoveMSI /^&gt;
ECHO   ^&lt;Display Level="None" AcceptEULA="TRUE" /^&gt;
ECHO ^&lt;/Configuration^&gt;
) &gt; "C:\Windows\Setup\Scripts\ProPlus2024VL.xml"
		</File>

		<File path="C:\Windows\Setup\Scripts\Specialize.ps1" transformation="Text">
$scripts = @(
	{
		net.exe accounts /maxpwage:UNLIMITED;
	};
	{
		C:\Windows\Setup\Scripts\unattend-01.cmd;
	};
);

&amp; {
	[float] $complete = 0;
	[float] $increment = 100 / $scripts.Count;
	foreach( $script in $scripts ) {
		Write-Progress -Activity 'Running scripts to customize your Windows installation. Do not close this window.' -PercentComplete $complete;
		&amp; $script;
		$complete += $increment;
	}
} *&gt;&amp;1 &gt;&gt; "C:\Windows\Setup\Scripts\Specialize.log";
		</File>
der Rest kann so bleiben.
PDF24 angepasste Installation (nur PDF Druckertreiber) per Script: viewtopic.php?t=30284
Winget (Desktop App Installer) für Windows Versionen ohne Store installieren (HowTo): viewtopic.php?t=26214
Vorstellung: tiny11builder; Script zur Verschlankung von Windows 11: viewtopic.php?t=30134
Windows StartMenü Empfohlen (Recommended Section) komplett ausblenden: viewtopic.php?t=30574
Hyper-V VM per Script erstellen viewtopic.php?t=25114

Tante Google

Re: Programme automatisch installieren nach Installation

Beitrag von Tante Google » 05.12.2024, 14:52


Benutzeravatar
Holgi
Elite
Elite
Beiträge: 2882
Registriert: 12.05.2018, 12:33
Hat sich bedankt: 364 Mal
Danke erhalten: 463 Mal
Gender:

Re: Programme automatisch installieren nach Installation

Beitrag von Holgi » 18.01.2025, 17:35

ich hatte hier:
viewtopic.php?t=30594&start=465#p435127
schon mal geschrieben, wie man einen Desktop Arrow Shortcut (Verknüpfungspfeil) los wird.
Das geht zwar grds. sehr gut mit dem Tool von WINAERO:
https://winaero.com/how-to-remove-short ... indows-11/
aber da ist man auf ein externes Icon-Symbol (blank.ico) angewiesen und Windows-eigene-Lösungen (Boardmittel) sind mir da immer lieber.
Jetzt ist mir ein dem blank.ico ebenbürtiger durchsichtiger Verknüpfungspfeil unter Windows aufgefallen. Der steckt hier:
"C:\Program Files\WindowsApps\MicrosoftWindows.Client.WebExperience_524.34401.20.0_x64__cw5n1h2txyewy\Dashboard\WebContent\wwwroot\favicon.ico"
Dumm nur, das die Versionsnummer (524.34401.20.0) sich irgendwann mal ändern wird. Also flugs ein Script geschrieben, welches die aktuelle Versionsnummer ausliest und dann den Registry-Eintrag entsprechend anpasst.
So kann man dieses Script gut mit in die autounattend.xml stecken.

arrow_remover (neu).cmd

Code: Alles auswählen

@Echo off
:: BatchGotAdmin
:-------------------------------------
REM  --> Check for permissions
    IF "%PROCESSOR_ARCHITECTURE%" EQU "amd64" (
>nul 2>&1 "%SYSTEMROOT%\SysWOW64\cacls.exe" "%SYSTEMROOT%\SysWOW64\config\system"
) ELSE (
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
)

REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
    echo Requesting administrative privileges...
    goto UACPrompt
) else ( goto gotAdmin )

:UACPrompt
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
    set params= %*
    echo UAC.ShellExecute "cmd.exe", "/c ""%~s0"" %params:"=""%", "", "runas", 1 >> "%temp%\getadmin.vbs"

    "%temp%\getadmin.vbs"
    del "%temp%\getadmin.vbs" 1>nul 2>nul

    exit /B

:gotAdmin
    pushd "%CD%"
    CD /D "%~dp0"
@echo off
setlocal enabledelayedexpansion

REM Pfad zur WindowsApps mit MicrosoftWindows.Client.WebExperience
set "basePath=C:\Program Files\WindowsApps"
set "searchFolder=MicrosoftWindows.Client.WebExperience_*"
set "targetPath=C:\Windows\System32"
set "iconFileName=favicon.ico"

REM Suche nach dem neuesten Ordner
for /d %%D in ("%basePath%\%searchFolder%") do (
    set "currentFolder=%%D"
)

REM Überprüfen, ob ein Ordner gefunden wurde
if not defined currentFolder (
    echo Kein passender Ordner gefunden. Abbruch.
    exit /b 1
)

REM Vollständigen Pfad zur Favicon-Datei
set "sourceIconPath=%currentFolder%\Dashboard\WebContent\wwwroot\%iconFileName%"

REM Überprüfen, ob die Datei existiert
if not exist "%sourceIconPath%" (
    echo Favicon.ico nicht gefunden unter "%sourceIconPath%". Abbruch.
    exit /b 1
)

REM Kopiere Favicon.ico nach C:\Windows\System32
copy /Y "%sourceIconPath%" "%targetPath%\%iconFileName%"
if %errorlevel% neq 0 (
    echo Fehler beim Kopieren der Datei nach "%targetPath%".
    exit /b 1
)

REM Registry-Schlüssel aktualisieren
set "finalIconPath=%targetPath%\%iconFileName%"
set "escapedPath=%finalIconPath:\=\\%"

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Icons" /v "29" /t REG_SZ /d "\"%escapedPath%\"" /f

REM Erfolgsmeldung
if %errorlevel% equ 0 (
    echo Registry erfolgreich aktualisiert mit "%escapedPath%".
    echo Bitte starten Sie den Explorer neu oder melden Sie sich ab/an, um die Änderungen zu übernehmen.
) else (
    echo Fehler beim Aktualisieren der Registry.
)

endlocal

taskkill /IM explorer.exe /F > NUL 2>&1 && start explorer > NUL 2>&1
Anmerkung:
der Teil von

Code: Alles auswählen

 :: BatchGotAdmin bis :gotAdmin
kann ggf. weggelassen werden. Da geht es nur um Administratorrechte.
Viel Spaß!
PDF24 angepasste Installation (nur PDF Druckertreiber) per Script: viewtopic.php?t=30284
Winget (Desktop App Installer) für Windows Versionen ohne Store installieren (HowTo): viewtopic.php?t=26214
Vorstellung: tiny11builder; Script zur Verschlankung von Windows 11: viewtopic.php?t=30134
Windows StartMenü Empfohlen (Recommended Section) komplett ausblenden: viewtopic.php?t=30574
Hyper-V VM per Script erstellen viewtopic.php?t=25114

Antworten