Re: Programme automatisch installieren nach Installation
Verfasst: 08.08.2023, 16:30
@Scoty:
Als erstes das aktuelle Winget herunterladen, sprich die msixbundle und die dazugehörige License: https://github.com/microsoft/winget-cli/releases
Dann aus der Install.wim den entsprechenden Index mounten, Winget integrieren und anschießend das Ganze speichern und wieder auswerfen. Kann man in eine cmd packen, schaut dann so aus:
Mußt halt die Dateinamen und Pfade anpassen. Wichtig hierbei ist, das des ganze mit License integriert wird, mit /skiplicense hab ichs nie zum laufen bekommen. Das ganze halt als Admin ausführen.
Dann eine autounattend.xml erstellen. In meiner läuft das Setup wie gewohnt komplett manuell ab, ich häng se mal dran:
Es werden lediglich 2 Registrierungswerte gesetzt und die Powershell Ausführungsrichtlinie festgelegt. Der erste Regeintrag aktiviert die Unterstützung für lange Dateinamen und ist eher Beifang. Der zweite deaktiviert die UAC, die könnte ansonsten dazwischen funken (keine Sorge, die wird später wieder aktiviert).
In diesem Fall wird dann keine setupcomplete.cmd sondern eine PostInstall.cmd aufgerufen. Wie Du die dann nennst, bleibt Dir überlassen. Du mußt den Namen in der autounattend.xml dann halt entsprechend anpassen.
Die PostInstall.cmd schaut bei mir dann unter anderem so aus:
Mit dem Powershell Befehl wird Winget richtig registriert, das läuft nämlich sowohl in Windows 10 als auch 11 nicht richtig bei der Integration (danke an @DK2000). Danach wird auf eine bestehende Internetverbindung getestet und entsprechend verzweigt. Zum Schluß wird mit dem Regeintrag die UAC wieder aktiviert und ein Neustart nach 30 Sekunden ausgelöst. Nach dem Neustart is die UAC wieder aktiv und sämtliche Software ist installiert.
Als erstes das aktuelle Winget herunterladen, sprich die msixbundle und die dazugehörige License: https://github.com/microsoft/winget-cli/releases
Dann aus der Install.wim den entsprechenden Index mounten, Winget integrieren und anschießend das Ganze speichern und wieder auswerfen. Kann man in eine cmd packen, schaut dann so aus:
Code: Alles auswählen
dism.exe /Mount-Image /ImageFile:D:\wasweissich\install.wim /index:deinewahl /MountDir:D:\work
DISM.exe /Image:D:\work\ /Add-ProvisionedAppxPackage /PackagePath:D:\wasweissich\Microsoft.DesktopAppInstaller.Msixbundle /LicensePath:d:\wasweissich\Microsoft.DesktopAppInstaller_License.xml /region="all"
dism.exe /Unmount-Image /MountDir:D:\work /commit
Dann eine autounattend.xml erstellen. In meiner läuft das Setup wie gewohnt komplett manuell ab, ich häng se mal dran:
Code: Alles auswählen
<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State">
<settings pass="offlineServicing"></settings>
<settings pass="windowsPE">
<component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS">
<UserData>
<ProductKey>
<Key>00000-00000-00000-00000-00000</Key>
</ProductKey>
<AcceptEula>true</AcceptEula>
</UserData>
</component>
</settings>
<settings pass="generalize"></settings>
<settings pass="specialize">
<component name="Microsoft-Windows-Deployment" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS">
<RunSynchronous>
<RunSynchronousCommand wcm:action="add">
<Order>1</Order>
<Path>%windir%\System32\reg.exe ADD HKLM\SYSTEM\CurrentControlSet\Control\FileSystem /v LongPathsEnabled /t REG_DWORD /d 1 /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>2</Order>
<Path>%windir%\System32\reg.exe ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v "EnableLUA" /t "REG_DWORD" /d "0" /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>3</Order>
<Path>%windir%\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -Command "Set-ExecutionPolicy -Scope 'LocalMachine' -ExecutionPolicy 'RemoteSigned' -Force;"</Path>
</RunSynchronousCommand>
</RunSynchronous>
</component>
</settings>
<settings pass="auditSystem"></settings>
<settings pass="auditUser"></settings>
<settings pass="oobeSystem">
<component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS">
<FirstLogonCommands>
<SynchronousCommand wcm:action="add">
<Order>1</Order>
<Description>PostInstall</Description>
<RequiresUserInput>false</RequiresUserInput>
<CommandLine>c:\windows\setup\scripts\PostInstall.cmd</CommandLine>
</SynchronousCommand>
</FirstLogonCommands>
</component>
</settings>
</unattend>
In diesem Fall wird dann keine setupcomplete.cmd sondern eine PostInstall.cmd aufgerufen. Wie Du die dann nennst, bleibt Dir überlassen. Du mußt den Namen in der autounattend.xml dann halt entsprechend anpassen.
Die PostInstall.cmd schaut bei mir dann unter anderem so aus:
Code: Alles auswählen
powershell Add-AppPackage -Register "'C:\Program Files\WindowsApps\*Microsoft.DesktopAppInstaller*neutral_split.language-de_8wekyb3d8bbwe\AppxManifest.xml'" -DisableDevelopmentMode
echo Teste Internetverbindung, bitte warten...
PING -n 1 www.google.com|find "Antwort von " >NUL
IF NOT ERRORLEVEL 1 goto :SUPER
IF ERRORLEVEL 1 goto :PECH
:SUPER
rem winget uninstall "Windows Web Experience Pack" -h --accept-source-agreements
winget install --id=Mozilla.Firefox -e -h --accept-source-agreements && winget install --id=VideoLAN.VLC -e -h --accept-source-agreements && winget install --id=RARLab.WinRAR -e -h --accept-source-agreements && winget install --id=Notepad++.Notepad++ -e -h --accept-source-agreements && winget install --id=DominikReichl.KeePass -e -h --accept-source-agreements && winget install --id=Nextcloud.NextcloudDesktop -e -h --accept-source-agreements && winget install --id=7zip.7zip -e -h --accept-source-agreements && winget install --id=dotPDNLLC.paintdotnet -e -h --accept-source-agreements && winget install --id=DuongDieuPhap.ImageGlass -e -h --accept-source-agreements && winget install --id=MoritzBunkus.MKVToolNix -e -h --accept-source-agreements && winget install --id=PuTTY.PuTTY -e -h --accept-source-agreements && winget install --id=Microsoft.PowerShell -e -h --accept-source-agreements
goto :END
:PECH
echo Dumm gelaufen!
goto :END
:END
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v "EnableLUA" /t "REG_DWORD" /d "1" /f
shutdown /r /t 30