ACTUEEL 16 OKTOBER 2026 - SETUP 0.5.4
Plug-in0.5.1 en audio-helper0.5 blijven ongewijzigd. De setup bereidt uitsluitend
bij Winamp5.9.2.10042 het gewone lokale profiel voor, inclusief geldige lokale
gebruikerscode, geen herhaalde machineregistratie of blokkerende RC-vraag.

Bestaand ondertekend firewallbewijs kan voor ongewijzigde firewallcode opnieuw
worden gecontroleerd. Geef beide -FirewallReferenceCandidate en
-FirewallReferenceEvidence mee aan Build-Setup.ps1. De referentiemap bevat de
oude geteste installer, ondertekend bewijs, bijbestanden, het exacte firewalllog
en onder sources de oorspronkelijke WinampCast.iss en stage.py. HMAC, hashes,
alle concrete oude firewallproeven en ongewijzigde afhankelijkheden zijn
verplicht. Alleen versienummers mogen verschillen in wizard en payloadselectie.
Wijzigingen aan firewallcode blokkeren hergebruik; er is geen skip/force-pad.
De exacte nieuwe installer doorloopt de overige controles opnieuw, inclusief
gewone5.9.2-opstart met Wasabi2, stille PCM en echte B-toets na vijf seconden.
Publicatie blijft uitsluitend via validate_release.py en publish_verified.py.

HISTORISCHE BOUWNOTITIES - eerdere versienummers hieronder zijn geschiedenis.

SNEL EEN VOLGENDE WINAMP CAST-SETUP BOUWEN
ACTUEEL: setup 0.5.1, audio-runtime blijft 0.5.
Het nieuwe deel bevat profielactivatie met Windows-foutcodes en gerichte UAC,
blijvende installatieverslagen en optionele automatische technische rapportage.
Zonder DiagnosticsUrl bouwt de setup met alleen lokale logging.
Voor de actieve bestaande ontvanger:
.\setup\Build-Setup.ps1 -DiagnosticsUrl "http://195.240.63.15:5590/api/winampcast/reports" -DiagnosticsTokenFile build\winampcast-ingest.token -AllowHttpDiagnostics

De uitkomst heet release\WinampCast-Setup-0.5.1.exe en de broncode-ZIP 0.5.1.
Nieuwe rapportage-instructies: diagnostics\GEBRUIK.txt.
Testcontrole: release\DISTRIBUTIETESTEN.txt.
Profile.ps1 start nog steeds als de oorspronkelijke gebruiker. Alleen wanneer
Windows toegang weigert wordt activeren/herstellen opnieuw met UAC geprobeerd,
met een expliciet reeds bepaald ini-pad en back-upmap van de oorspronkelijke
gebruiker. Leid bij die tweede poging het pad nooit af uit admin-AppData.

Hieronder de historische 0.5-bouwinstructies; bestandsnamen/hashes van 0.5 zijn
bewaarinformatie. Gebruik voor huidige output de actuele 0.5.1-bestanden.

Bijgewerkt 14 oktober 2026. Bestaande werkende bouwstraat hergebruiken.

1. HET BESTAND WAAR DEZE SESSIE OVER GAAT

D:\software_projects\winamp_cast\release\WinampCast-Setup-0.5.exe
Grootte: 27.182.409 bytes.
SHA256:
cc6bc1d485df9cb2c96fce56c0dd4143d626dff4284fc20a0df6d257804b2094
Dit is de Nederlandse distributiewizard, niet de persoonlijke releaseback-up.
De gebruiker heeft dit exacte pad bevestigd als het bedoelde setupbestand.
Het bestand is niet digitaal ondertekend.

2. DEZELFDE 0.5 OPNIEUW VERPAKKEN

Vanuit D:\software_projects\winamp_cast, PowerShell:
.\setup\Build-Setup.ps1

Dat is voldoende als alleen de setup gewijzigd wordt. Niet eerst de audio-plug-in
opnieuw bouwen, dependencies upgraden of opnieuw een installer-framework kiezen.
De toolchain en de LGPL-broncode zijn al lokaal aanwezig.

Gebruikte gereedschappen:
- .venv\Scripts\python.exe, Python 3.13 met de bestaande PyInstaller-installatie.
- build\setup-tools\inno\ISCC.exe, Inno Setup 6.7.3.
- C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe.
- build\setup-tools\sources\zeroconf-0.151.5.tar.gz.
De Zeroconf-downloadreferentie/hash staan naast die tar in zeroconf-source.json.
SHA256 van de gebruikte tar:
28c2ec9d772007eedf11b41a9c9fd3d5c684c17b00721ff8f1ee31b20ad286a1
Alternatief bronpad bij een publieke broncodekopie: third-party-sources\...
Een ander Inno-compilerpad kan met -Compiler worden opgegeven.

De bouwer maakt een NIEUWE build\setup-stage-DATUM-TIJD. Hergebruik een bestaande
stagingmap niet; oude inhoud kan dan ongemerkt meekomen of mkdir kan falen.
build\setup-latest-stage.txt wijst na staging naar de laatst gebruikte map.
De setup-EXE, controlesom, schone broncode-ZIP en pakketcontrole staan in release.
Een rebuild overschrijft de gelijknamige EXE; bewaar een uitgebrachte EXE met
de bijbehorende hash vóór een volgende wijziging. De huidige documentatie-update
heeft de bevestigde setup-EXE niet opnieuw gebouwd of gewijzigd.

3. WAAR DE PAYLOAD VANDAAN KOMT

setup/stage.py leest nu bewust:
backups\stabiel-0.5-20261014-155027\dist

Dus NIET automatisch de nieuwste werkmap-dist. Dit voorkomt dat een testbuild
onbedoeld de geaccepteerde versie vervangt. Bij een nieuwe audio-versie eerst
bouwen/testen, hoorbaar laten beoordelen en afzonderlijk vastleggen; daarna
pas STABLE in de staginghelper naar die nieuwe vastgelegde release wijzigen.
Voor enkel een wijziging aan wizard/scripts blijft de 0.5-runtime dezelfde.
Beide bestaande stabiele back-upmappen en ZIPs nooit wijzigen.

De staginghelper:
- Kopieert alleen out_cast.dll en de benodigde helper-runtime.
- Controleert runtimebestanden en ingebouwde bridge-PYZ-constanten op privémarkers.
- Neemt geen winamp.ini, installatiegegevens, settings.json, playlist of logs mee.
- Laat de ongebruikte FFmpeg-EXE weg: deze versie gebruikt PCM/WAV.
- Neemt licenties en de passende ongewijzigde Zeroconf-broncode mee.
- Maakt een schone broncode-ZIP, zonder thuisnetwerkmarkers en persoonlijke tests.
De publieke staginghelper gebruikt de eigen gebouwde dist-map. De lokale helper
heeft extra thuisspecifieke auditmarkers; dat is bewust een verschil.

4. NIEUWE VERSIENUMMERS

Er zijn nu meerdere expliciete 0.5-verwijzingen. Zoek gericht:
rg -n '0\.5|STABLE|WinampSHA' setup native\out_cast.cpp bridge\main.py

Controleer bij een nieuwe versie:
- setup/WinampCast.iss: AppVersion, AppVerName, OutputBaseFilename, uninstallnaam.
- setup/Build-Setup.ps1: naam van de geproduceerde EXE en hash-sidecar.
- setup/stage.py: STABLE, payloadversie, broncode-ZIPnaam, pakketrapport.
- setup/Machine.ps1: toegestane payloadversie en nieuwe installatiegegevens.
- setup/Profile.ps1: versie in het nieuwe profielrecord.
- Algemene gebruikersdocumenten, broncode-ZIPverwijzing en testresultaten.
- Native beschrijving/helper-log alleen bij een daadwerkelijke audio-versie.
Geen globale zoek/vervangactie over backups uitvoeren.
Nieuwe Winamp-download alleen aanpassen na controle van officiële bron, versie,
ondertekening en SHA256. De setup controleert de vastgelegde WinampSHA.

5. OPGELOSTE PROBLEMEN — NIET OPNIEUW INTRODUCEREN

- Wizard draait met PrivilegesRequired=lowest. Alleen machinewerk wordt zo nodig
  verhoogd. Profile.ps1 draait als de oorspronkelijke gebruiker; anders kan bij
  UAC met andere credentials het verkeerde AppData-profiel worden geactiveerd.
- RunProfile/RunMachine beheren 32/64-bit filesystemredirection expliciet en
  herstellen de oude toestand in finally. Houd dit ook bij ShellExec/runas intact.
- De benodigde PowerShell-modules worden via hun Windows-pad geïmporteerd.
  In de eerdere installatietest was Get-FileHash niet beschikbaar. De payload-
  hashcontrole gebruikt nu rechtstreeks .NET SHA256.
- Profile.ps1 mag geen C# ter plekke compileren. CodeDom/csc starten vanuit de
  setup mislukte hier. SetupIni.cs wordt bij de BUILD tot SetupIni.dll gecompileerd;
  de installatie laadt alleen die al gebouwde DLL.
- Installeren/activeren gebeurt in PrepareToInstall en fouten worden als tekst
  teruggegeven. Een uitzondering in ssPostInstall gaf eerder tóch setup-exitcode 0.
  Maak een mislukking nooit afhankelijk van alleen een runtime-popup achteraf.
- Payload is één gecontroleerde payload.zip, expliciet tijdelijk uitgepakt.
  Gebruik geen dubbel geëxpandeerde {tmp}-paden met ExtractTemporaryFiles.
- De elevated worker controleert 32-bit Winamp, gesloten speler, integriteit en
  paden vóór mutaties. Relatieve '..', '.', ':' en absolute paden worden geweigerd.
- Verwijderen gebruikt een eigen bestandsinventaris en uitsluitend de eigen
  firewallregel. Winamp, de gebruikersplaylist en niet-eigen bestanden blijven staan.
- Runtimefouten/waarschuwingen gaan via een UTF-16 result.ini naar Inno. De .NET-
  schrijfroute blijft ook bruikbaar als een PowerShell-module-import mislukt.
- UI Automation moet de knop op 'Volgende*' herkennen; het exacte pijltje/ampersand
  verschilde in de benoeming. Wacht kort op initialisatie van het wizardvenster.
- pytest.ini houdt actieve tests binnen tests; verzamel nooit de bevroren kopieën.

6. VERIFICATIE VOOR EEN GEWIJZIGDE SETUP

Gebruik een aparte programmamap en een leeg/testprofiel. Start geen installatie
over de gewone Winamp alleen om de wizard te testen. Gebruik /NOICONS en een
aparte /DIR voor onderhoudsbestanden; zo blijven geen test-snelkoppelingen achter.

Een stille integratierun kan deze vorm gebruiken (paden naar eigen testkopie):
WinampCast-Setup-VERSIE.exe /VERYSILENT /SUPPRESSMSGBOXES /NORESTART /NOICONS
  /NOFIREWALL=1 /WINAMP="VOLLEDIG-PAD-NAAR-TEST-WINAMP"
  /DIR="VOLLEDIG-PAD-NAAR-TEST-ONDERHOUDSMAP" /LOG="VOLLEDIG-PAD-NAAR-LOG"
Dit is één opdracht; de regels hierboven zijn alleen voor de leesbaarheid gesplitst.
Controleer exitcode én outname=out_cast.dll, behoud van bestaande ini-waarden
en het bestaan van de juiste runtime. Controleer daarna de uninstaller op die
testkopie: out_ds/out_wave hersteld, Winamp behouden, Cast-DLL weg.

Gerichte tools:
.\.venv\Scripts\python.exe tests\setup_validation.py
.\.venv\Scripts\python.exe tests\setup_runtime_probe.py --player "TEST-WINAMP.EXE"
Windows PowerShell 5: tests\setup_ui.ps1 -SetupExe "SETUP.EXE"
De UI-preview installeert niets. De runtimeprobe start/afsluit uitsluitend zijn
eigen stille testspeler en selecteert geen speaker. Lees aannames/paden eerst.

Alleen bij gewijzigd firewall/elevatiepad: echte testregel op de testhelper
toevoegen, Private/Inbound/Allow/LocalSubnet/Program controleren en via de
test-uninstaller weer verwijderen. Windows-UAC kan daarvoor nodig zijn.
De bestaande echte Winamp Cast-regel niet als testregel gebruiken/verwijderen.
Alle hoorbare tests alleen op Eettafel. Geen verdere Next-latency-optimalisatie.

Bij iedere release: controleer .exe.sha256, PAKKETCONTROLE.json en de publieke
broncode-ZIP. Niet een persoonlijke back-up-ZIP als distributiepakket gebruiken.
Tests hoeven bij alleen een documentatiecorrectie niet opnieuw uitgevoerd te worden.

7. WAT NOG OPENSTAAT

- Volledige eerste installatie via de officiële Winamp 5.9.2-wizard op een schone
  Windows-pc/VM. Een los uitgepakte 5.9.2 startte hier ook zonder de plug-in niet
  volledig; dat bewijst noch een pluginfout, noch volledige 5.9.2-compatibiliteit.
  Herhaal die kale uitpakproef niet als bewijs van een verse installatie.
- Praktijkervaring van de ontvanger met NVDA; de toegankelijkheidsstructuur is getest.
- Digitale ondertekening van de setup, als de gebruiker die later wil regelen.
Er is nu geen nieuwe opdracht om deze punten uit te voeren: sessie afsluiten.

De gewone Winamp bleek aan het eind van de tests al gesloten. Er is geen nieuwe
sessie opgeslagen. De oudere build/playback-state.json nooit blind terugzetten.
Zie DISTRIBUTIE-SETUP.txt en release/DISTRIBUTIETESTEN.txt voor de eindresultaten.
