Een Windows-installer die niets meer doet dan installeren #1582
No reviewers
Labels
No labels
accepted
bug
declined
docs
duplicate
enhancement
good first issue
in-progress
needs-info
privacy
security
triage
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
LibreKAT/Ocideck!1582
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/windows-installer"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Sluit #1208. Uitpakken en zelf een snelkoppeling maken is een armoedige manier om iets te installeren; er is nu een gewone Windows-installer.
Wat er komt
make build-windows-installerverpakt de bundel diemake build-windowsnet heeft neergezet (Inno Setup 6.3+, Windows only). Snelkoppeling in het startmenu en desgewenst op het bureaublad, de bestandsassociaties, en de-installeren via Programs and Features. Standaard machinebreed, met een uitwijk naar alleen-voor-mij voor wie geen beheerdersrechten heeft — vandaarHKAen{autopf}, zodat één sleutellijst allebei bedient.packaging/windows/ocideck.issscripts/build_windows_installer.shMakefilemake build-windows-installertest/windows_packaging_test.dartPlaatsing wijkt bewust af van het plan in de issue: dat noemde
windows/, maarpackaging/linux/bestond intussen als precedent.packaging/windows/spiegelt dat en houdt Flutters eigen platformmap schoon.De grens
Geen bijwerken, geen versiecontrole, geen release-feed, en op geen enkel moment het netwerk op.
SECURITY.mdbelooft dat OciDeck niet naar huis belt en dat een verbetering je bereikt door de standaardtak op te halen en opnieuw te bouwen; een installer die zichzelf kan bijwerken ruilt die belofte in voor gemak. Dat staat niet op goede bedoelingen: de poort laat de bouw vallen zodra er een downloader óf een[Code]-sectie in het script verschijnt — dat laatste omdat dáár een versiecontrole zich zou verstoppen.SECURITY.mdzei "geen getekende installer die zichzelf bijwerkt". Dat blijft letterlijk waar, maar wie nu een installer aantreft verdient de verzoening erbij; die alinea is toegevoegd.Ondertekenen: een schakelaar die uit staat
#1013 blijft gelden — sinds maart 2024 koopt geen enkel certificaattype directe SmartScreen-rust. Zonder certificaat bouwt het script een prima installer en waarschuwt luid; mét certificaat is het alles-of-niets, want een half-getekende installer ziet er betrouwbaar uit op precies de plek waar mensen kijken. Het accepteert uitsluitend een vingerafdruk uit de certificaatopslag — geen sleutelbestand, geen wachtwoord — zodat ondertekenmateriaal nooit een omgevingsvariabele of runner-geheim kan worden. Dezelfde lijn die
notarize_macos.shop macOS aanhoudt.Afweging (bewaker) — één echte botsing
Vier van de vijf vragen zijn schoon: het
.md-formaat wordt niet geraakt, er komt geen nieuwe partij in het draaipad (Inno Setup is een bouwgereedschap op de machine van de beheerder), het.issis klein en leesbaar, en een geïnstalleerde OciDeck overleeft dit project zonder server. De vijfde niet.Een installer vraagt om verhoging. Een ongetekende installer die om verhoging vraagt leert een slechtere gewoonte aan dan een ongetekende app die je zelf uitpakt — mensen zijn getraind installatievensters weg te klikken, en juist daar staat straks "Onbekende uitgever". Publiceren is dus een andere beslissing dan bouwen. Veiligheid gaat hier voor gemak, maar niet door de installer tegen te houden: de voorwaarde is dat hij, zodra hij gepubliceerd wordt, in
SHA256SUMSstaat en dus onder de minisign-handtekening over dat manifest valt. Die handtekening komt in de plaats van het afgewezen certificaat. Staat het commentaar bij indocs/BUILD.md; ik verander van gedachten zodra er wél een certificaat is.Eén claim rechtgezet
Ik schreef eerst dat geen CI-runner een installer kan bouwen. Onjuist: de forge heeft geen Windows-machine, maar
.github/workflows/release.ymlop de spiegel bouwt bij elkev*-tag de Windows-zip die de forge terughaalt. De installer in die lijn hangen is een open besluit, geen onmogelijkheid — het vraagt Inno Setup gepind op de runner (windows-latestlevert het sinds Server 2025 niet meer mee) en de keuze over een tweede Windows-artefact. De packager is daarom bash en geenmake-doel: die job merkt zelf op datmakeer niet betrouwbaar staat.Tot dat besluit valt is het handwerk en levert een release nog steeds alleen de zip. Dat staat nu ook zo in de changelog, zodat niemand naar een download zoekt die er niet is.
Toetsen
make checkgroen: 9.938 tests, dekking 87,1%, per-bestand-vloer 0.make check-secrets(gitleaks + trufflehog, werkboom én historie): geen bevindingen.make sast(semgrep, lokale regels): 0 findings.test/windows_packaging_test.darttoetst offline wat wél kan roesten — precies de opzet vanlinux_packaging_test.dartvoor .deb/.rpm/AppImage. Of de installer écht installeert, associeert en de-installeert blijft handwerk op Windows.[Code]-sectie erbij, een bestandslijst in plaats van de bundel, de ongetekend-waarschuwing weg, tijdstempeling laten vallen — alle vijf betrapt.REGISTRATION_TESTSen niet alleen in de volle suite: die draait pas ná de merge oplinux-gate, en dan is drift geschiedenis in plaats van een bewerking.docs/CHECKS.mdtelde er vier; het zijn er nu vijf.Documentatie
docs/BUILD.md(bouwroute + ondertekenen + publicatievoorwaarde),packaging/README.md(van Linux-only naar beide platformen),SECURITY.md(twee alinea's),docs/CHECKS.md(de telling),CHANGELOG.md.Uitpakken en zelf een snelkoppeling maken is een armoedige manier om iets te installeren. `make build-windows-installer` verpakt daarom de bundel die `make build-windows` net heeft neergezet in een gewone Inno Setup-installer: snelkoppeling, de bestandsassociaties uit windows/file-associations.reg, en de-installeren via Programs and Features. Standaard machinebreed, met een uitwijk naar alleen-voor-mij voor wie geen beheerdersrechten heeft — vandaar `HKA` en `{autopf}`, zodat één sleutellijst allebei bedient. Wat er niet in zit is de kern van het ontwerp: geen bijwerken, geen versiecontrole, geen release-feed, en op geen enkel moment het netwerk op. SECURITY.md belooft dat OciDeck niet naar huis belt en dat een verbetering je bereikt door de standaardtak op te halen en opnieuw te bouwen; een installer die zichzelf kan bijwerken ruilt die belofte in voor gemak. Het gemak is het waard, het updatekanaal niet. Ondertekenen is een schakelaar die uit staat, want #1013 blijft gelden: sinds maart 2024 koopt geen enkel certificaattype directe SmartScreen-rust. Zonder certificaat bouwt het script een prima installer en waarschuwt luid; mét certificaat is het alles-of-niets, omdat een half-getekende installer er betrouwbaar uitziet op precies de plek waar mensen kijken. Het accepteert uitsluitend een vingerafdruk uit de certificaatopslag — geen sleutelbestand, geen wachtwoord — zodat ondertekenmateriaal nooit een omgevingsvariabele of een runner-geheim kan worden. Dezelfde lijn die notarize_macos.sh op macOS aanhoudt. Verwijst naar #1208. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>