Wiki source code of Win32 Paket (aus exe erstellen)
Version 13.1 by Dimitri Rupp on 2026/06/11 11:07
Show last authors
| author | version | line-number | content |
|---|---|---|---|
| 1 | Um ein *.intunewin Paket zu erstellen welches über Intune ausgerollt werden kann wird zuerst das MS Win32 Content Prep Tool benötigt. | ||
| 2 | |||
| 3 | Dies kann von hier heruntergeladen werden: [[https:~~/~~/github.com/microsoft/Microsoft-Win32-Content-Prep-Tool>>https://github.com/microsoft/Microsoft-Win32-Content-Prep-Tool]] | ||
| 4 | |||
| 5 | |||
| 6 | Nun benötigt man die *.exe Datei vom gewünschten Programm. Und legt diese in einem eigenen Ordner ab. | ||
| 7 | |||
| 8 | Nun die IntuneWinAppUtil.exe ausführen. | ||
| 9 | |||
| 10 | [[image:1633589994764-159.png]] | ||
| 11 | |||
| 12 | ~1. Den Folder angeben in dem die exe Datei liegt. **WICHTIG: **Der Source Ordner sollte idealerweise nur die Installationsdatei beinhalten, da beim Paketieren der komplette Ordner Inhalt mit in das Packe geschrieben wird) | ||
| 13 | |||
| 14 | 2. Den Namen der exe Datei inkl. der Endung angeben | ||
| 15 | |||
| 16 | 3. Den Ausgabe Folder angeben | ||
| 17 | |||
| 18 | 4. Katalog Folder angeben | ||
| 19 | |||
| 20 | |||
| 21 | Es wird nun im Ausgabe Folder ein *.intunewin Paket erstellt. | ||
| 22 | |||
| 23 | |||
| 24 | Danach die Registerreiter durchgehen: | ||
| 25 | |||
| 26 | App Informationen: Den Namen sowie die Beschreibung der App angeben. Außerdem muss ein Publisher eingetragen werden. Am Schluß ein Logo hinzufügen. | ||
| 27 | |||
| 28 | Program: Install Command (Gute Webseite dafür ist: [[https:~~/~~/silentinstallhq.com/silent-install-knowledge-base/>>https://silentinstallhq.com/silent-install-knowledge-base/]]) sowie Uninstall Command eintragen und definieren ob es als System oder Benutzer installiert wird. Restart auf "no specific action" einstellen. | ||
| 29 | |||
| 30 | Detection Rules: Manually configured detection rules ~-~-> File ~-~-> Programmpfad und Programmstartdatei angeben | ||
| 31 | |||
| 32 | |||
| 33 | Save/Review und Fertig | ||
| 34 | |||
| 35 | |||
| 36 | **Anleitung von Istvan für ein Win32 Paket inkl. Zertifikat und uninstall Script:** | ||
| 37 | |||
| 38 | |||
| 39 | = Voraussetzungen = | ||
| 40 | |||
| 41 | MSI Datei besorgen, an Testsystem (z.B. eine virtuelle Win10, wo man mit Snapshots einfach zurückrollen kann) nicht signierte PS-Scripts erlauben: Set-ExecutionPolicy RemoteSigned | ||
| 42 | |||
| 43 | |||
| 44 | = Install Script = | ||
| 45 | |||
| 46 | |||
| 47 | //# Restart Process using PowerShell 64-bit// | ||
| 48 | |||
| 49 | //If ($ENV:PROCESSOR_ARCHITEW6432 -eq "AMD64") {// | ||
| 50 | |||
| 51 | // Try {// | ||
| 52 | |||
| 53 | // &"$ENV:WINDIR\SysNative\WindowsPowershell\v1.0\PowerShell.exe" -File $PSCOMMANDPATH// | ||
| 54 | |||
| 55 | // }// | ||
| 56 | |||
| 57 | // Catch {// | ||
| 58 | |||
| 59 | // Throw "Failed to start $PSCOMMANDPATH"// | ||
| 60 | |||
| 61 | // }// | ||
| 62 | |||
| 63 | // Exit// | ||
| 64 | |||
| 65 | //}// | ||
| 66 | |||
| 67 | |||
| 68 | //# Install KeePass-2.53.1// | ||
| 69 | |||
| 70 | //Start-Process Msiexec.exe -Wait -ArgumentList '/i KeePass-2.53.1.msi REBOOT=ReallySuppress /qn'// | ||
| 71 | |||
| 72 | |||
| 73 | |||
| 74 | = Uninstall Script = | ||
| 75 | |||
| 76 | Nachdem es damit an Testsystem installiert wurde, muss man in Registry das UninstallString suchen, um ein uninstall Script zu erstellen, bei KeePass lag das hier: | ||
| 77 | |||
| 78 | Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\BD86750637CD80E4B8B058ECB0890991\InstallProperties | ||
| 79 | |||
| 80 | Stop-Process -Name: dazu passt, was man im Taskmanager findet, wenn App läuft (kann als Befehl getestet werden: //Stop-Process -Name KeePass -ErrorAction SilentlyContinue //) | ||
| 81 | |||
| 82 | Mit Installscript installieren, App starten, bei laufende App Uninstallscript ausführen, (gerne mehrmals) sollte einwandfrei funktionieren, ohne Adminrechte. | ||
| 83 | |||
| 84 | |||
| 85 | //# Restart Process using PowerShell 64-bit// | ||
| 86 | |||
| 87 | //If ($ENV:PROCESSOR_ARCHITEW6432 -eq "AMD64") {// | ||
| 88 | |||
| 89 | // Try {// | ||
| 90 | |||
| 91 | // &"$ENV:WINDIR\SysNative\WindowsPowershell\v1.0\PowerShell.exe" -File $PSCOMMANDPATH// | ||
| 92 | |||
| 93 | // }// | ||
| 94 | |||
| 95 | // Catch {// | ||
| 96 | |||
| 97 | // Throw "Failed to start $PSCOMMANDPATH"// | ||
| 98 | |||
| 99 | // }// | ||
| 100 | |||
| 101 | // Exit// | ||
| 102 | |||
| 103 | //}// | ||
| 104 | |||
| 105 | |||
| 106 | //# Stop KeePass Process// | ||
| 107 | |||
| 108 | //Stop-Process -Name KeePass -ErrorAction SilentlyContinue// | ||
| 109 | |||
| 110 | |||
| 111 | //# Uninstall KeePass// | ||
| 112 | |||
| 113 | //Start-Process Msiexec.exe -wait -ArgumentList /'x {605768DB-DC73-4E08-8B0B-85CE0B989019} REBOOT=ReallySuppress /qn'// | ||
| 114 | |||
| 115 | |||
| 116 | |||
| 117 | |||
| 118 | |||
| 119 | Code Signing Certificate für Domain User besorgen | ||
| 120 | \\An DC anmelden, MMC starten, add/remove snap-in, Certificates, My User Account, dann Request erstellen: | ||
| 121 | |||
| 122 | [[image:image-20230531155049-1.png]] | ||
| 123 | |||
| 124 | Ich habe ein Template für CodeSigning erstellt, welche 2 Jahren Gültigkeit hat: | ||
| 125 | |||
| 126 | [[image:image-20230531155102-2.png]] | ||
| 127 | |||
| 128 | Bald hat man ein CodeSigning Cert: | ||
| 129 | |||
| 130 | [[image:image-20230531155138-4.png]] | ||
| 131 | |||
| 132 | = Script signieren = | ||
| 133 | |||
| 134 | Powershell Script auf eine DC kopieren, signieren: | ||
| 135 | |||
| 136 | So kann man schauen, welche Certs zu Signieren nutzbar sind: | ||
| 137 | |||
| 138 | //Get-ChildItem cert:\CurrentUser\My -codesigning// | ||
| 139 | |||
| 140 | |||
| 141 | Variable cert bekommt als Wert das Thumbprint von unsere Codesigning Cert (erste in der Liste ist null, wenn mehr gibt’s, Wert anpassen): | ||
| 142 | |||
| 143 | //$cert = @(Get-ChildItem cert:\CurrentUser\My -codesigning)[0]// | ||
| 144 | |||
| 145 | |||
| 146 | So wird installkeepass2531.ps1 Script mit diese Cert singniert: | ||
| 147 | |||
| 148 | //Set-AuthenticodeSignature installkeepass2531.ps1 $cert// | ||
| 149 | |||
| 150 | [[image:image-20230531155201-5.png]] | ||
| 151 | |||
| 152 | |||
| 153 | |||
| 154 | |||
| 155 | = Intunewim Datei erstellen = | ||
| 156 | |||
| 157 | Signierte Scripte, MSI und [[IntuneWinAppUtil>>url:https://github.com/microsoft/Microsoft-Win32-Content-Prep-Tool/blob/master/IntuneWinAppUtil.exe]] in einen Folder kopieren, IntuneWinAppUtil aus PS ausführen, Source Folder, Installscript, Output Folder angeben, NO zu catalog folder: | ||
| 158 | |||
| 159 | [[image:image-20230531155208-6.png]] | ||
| 160 | |||
| 161 | |||
| 162 | |||
| 163 | |||
| 164 | = Intune App erstellen = | ||
| 165 | |||
| 166 | |||
| 167 | MS Intune Admin Center, Windows App, Add, Windows app (Win32), Intunewim Datei hochladen, Daten angeben, Logo hochladen: | ||
| 168 | |||
| 169 | [[image:image-20230531155214-7.png]] | ||
| 170 | |||
| 171 | |||
| 172 | |||
| 173 | |||
| 174 | Install command: | ||
| 175 | powershell.exe -noprofile -windowstyle hidden -file .\installkeepass2531.ps1 | ||
| 176 | |||
| 177 | Uninstall command: | ||
| 178 | powershell.exe -noprofile -windowstyle hidden -file .\uninstallkeepass2531.ps1 | ||
| 179 | (Screenshot hat „-executionpolicy bypass“, aber das ist nicht nötig, Script ist signiert) | ||
| 180 | |||
| 181 | [[image:image-20230531155228-8.png]] | ||
| 182 | |||
| 183 | |||
| 184 | |||
| 185 | |||
| 186 | Windows 10 1607 und 64bit wählen: | ||
| 187 | |||
| 188 | [[image:image-20230531155238-9.png]] | ||
| 189 | |||
| 190 | |||
| 191 | Detection Rule manually konfigurieren | ||
| 192 | [[image:image-20230531155247-10.png]] | ||
| 193 | |||
| 194 | Next, next, next, zu Gruppe zuordnen (wenn nötig, zuerst zu eine Testgruppe), Create! | ||
| 195 | |||
| 196 | ---- | ||
| 197 | |||
| 198 | == Verwandte Themen == | ||
| 199 | |||
| 200 | {{include reference="IT-Wiki.Makros.Verwandte-Themen.WebHome"/}} | ||
| 201 | |||
| 202 | ---- | ||
| 203 | **Status:** Migriert — Team-Review ausstehend · **Owner:** //(festlegen)// · **Letzter Review:** 2026-06-11 |