Een WinTAK-plugin is een klassenbibliotheek voor .NET Framework, geschreven in C# met WPF, die WinTAK ontdekt via het Managed Extensibility Framework (MEF) en in zijn eigen proces laadt. Hij kan lintknoppen, dokbare panelen, kaarttools, Cursor on Target (CoT)-handlers en achtergrondservices toevoegen. Je bouwt hem in Visual Studio tegen de WinTAK SDK die hoort bij de exacte WinTAK-release van je gebruikers, en levert hem als .wpk-pakket.
Deze gids is bedoeld voor .NET-teams die beginnen met WinTAK-pluginontwikkeling en voor programmamedewerkers die WinTAK-plugins aanschaffen. Ze vormt een aanvulling op ons overzicht van plugin-engineering voor ATAK en WinTAK en WinTAK in het TOC. Klasse- en interfacenamen komen uit de gepubliceerde WinTAK SDK API-referentie en de bijbehorende gids „Extending WinTAK”; de API verandert tussen releases, dus controleer elke naam tegen de SDK-versie waarmee je bouwt.
Wat is WinTAK?
WinTAK is het Windows-lid van de Team Awareness Kit-familie (TAK): een door de overheid ontwikkelde standaardapplicatie (GOTS) en een kaartframework dat volgens de gebruikershandleiding werkt „zowel in een tactische omgeving als in een command- en controlomgeving”. Het deelt het CoT-gebeurtenismodel met ATAK en iTAK (zie TAK-protocol: CoT XML versus protobuf), verbindt met TAK Server en verwerkt overlays, datapakketten, video en chat. Ondertekende WinTAK-installers noemen PAR Government als geverifieerde uitgever, en recente 5.x-releases richten zich op .NET Framework 4.8.1 op 64-bits Windows.
De productpagina’s op tak.gov noemen twee WinTAK-productlijnen. WinTAK-CIV, „Windows OS Team Awareness Kit for Civilians”, is de editie die je krijgt door je op tak.gov te registreren; TAK-CIV-binaries worden na goedkeuring openbaar, met uitzondering van embargoelanden en partijen op de Denied Persons List. WinTAK-MIL (de Windows Tactical Assault Kit) is beperkt tot militair gebruik door de VS, en vreemde regeringen krijgen TAK-MIL uitsluitend via Foreign Military Sales. tak.gov classificeert ATAK-CIV als EAR99, maar zegt dat andere TAK-CIV-productlijnen nog worden geëvalueerd — neem dus niet aan dat WinTAK-CIV dezelfde classificatie heeft. Gebruik voorbij test en evaluatie vereist een exploitatie-autorisatie (ATO) van je organisatie.
WinTAK-versienummers volgen die van ATAK. Het openbare releaseschema van tak.gov noemt WinTAK 5.8 voor augustus 2026 en 5.9 voor december 2026, elk met een featurefreeze een maand eerder. tak.gov noemt ook TAKX, „de samenvoeging van twee vooraanstaande op Windows gebaseerde command- en controlplatforms: WinTAK en RaptorX”, met eigen varianten en pluginlijst. Als je voor de komende jaren een desktopclient kiest, vraag dan eerst welke je gebruikers in het veld zullen gebruiken voordat je een plugindoel vastlegt.
Waar vind je WinTAK-plugins
Als je bestaande WinTAK-plugins nodig hebt in plaats van een nieuwe, kijk dan op vier plekken:
- De WinTAK-installer. Optionele plugins die bij de build horen, worden meegeleverd en tijdens de installatie op een checklist aangevinkt; draai de installer opnieuw en kies Modify om er meer toe te voegen. De quickstartgids noemt Data Sync en ExCheck als voorbeelden.
- Pluginlijsten op tak.gov. tak.gov houdt een WinTAK-pluginspagina bij, en sommige plugins worden als losse .wpk-bestanden geleverd. Je hebt een account nodig, en wat je mag downloaden hangt af van je rol.
- Leveranciers van hardware en software. Veel plugins bestaan omdat een bedrijf zijn sensor, radio of dienst in TAK wil hebben; het TAK Product Center merkt op dat dergelijk werk buiten contracten om (IRAD) doorgaans op de verkoop van een gekoppeld systeem is gericht.
- Community-projecten. Die bestaan, maar veel minder dan voor ATAK; onze gids voor het open-source TAK-ecosysteem behandelt wat gratis is.
De WinTAK-gebruikershandleiding noemt drie manieren om een plugin te installeren: Plug-in Manager in het applicatiemenu, een .wpk-bestand op het WinTAK-venster slepen (dubbelklikken werkt ook), of selectie tijdens de WinTAK-installatie. Plug-in Manager haalt plugins uit een lokale map of van een web-update-server, waarvoor een beheerder het hulpprogramma wpkbuilder draait om een plugins.json-catalogus aan te maken; plugins in een geconfigureerde lokale map worden bij het starten van WinTAK automatisch geïnstalleerd. Twee controles wegen zwaarder dan functies: de .wpk moet gebouwd zijn voor je exacte WinTAK-build en moet zijn goedgekeurd voor je variant en netwerk.
De WinTAK SDK: toegang, stack en tooling
De WinTAK SDK komt van tak.gov, en toegang hangt af van wie je bent. Een openbare walkthrough voor ontwikkelaars van maart 2025 downloadde de WinTAK-CIV SDK (toen versie 5.3) en Visual Studio-projectsjablonen (een .vsix-bestand) uit de ontwikkelaarsresources op de WinTAK-CIV-productpagina. De tak.gov-FAQ is strenger: „Als je een overheidssponsor hebt, krijg je toegang tot de ATAK- of WinTAK-software development kits (SDK’s).” Het gepubliceerde ontwikkelproces van het TAK Product Center geeft overheidsontwikkelaars en hun aannemers repository-toegang tot een Standard SDK (niet-DoD-sponsors) of een Military SDK (DoD-sponsors). Beide bevatten interfacecontroledocumenten, voorbeeldbroncode en een niet-gecodeerde ontwikkelaarsbuild van de hostapplicatie met een „Development Build”-watermerk.
De stack is klassiek Windows-desktop, niet modern .NET:
- .NET Framework en C#. Plugins richten zich op het framework van de host (4.8.1 in recente releases). Bibliotheken die alleen voor .NET 6 of 8 zijn gebouwd, laden niet in-process; .NET Standard 2.0-bibliotheken wel.
- WPF en XAML voor elke view, gekoppeld aan viewmodellen.
- MEF (
System.ComponentModel.Composition) voor discovery en dependency injection: WinTAK scant plugin-assemblies op geëxporteerde, geattribueerde klassen — „conventie boven configuratie”, in de woorden van de SDK-gids. - Prism voor modules en de eventaggregator.
- NuGet-pakketten met de WinTAK-assemblies. Oudere SDK-gidsen gebruikten een
WinTak-Dependencies-pakket uit een TAKMaps Artifactory-feed; huidige SDK-installaties plaatsen een NuGet-map in de WinTAK-installatie die je als lokale pakketbron toevoegt.
Omdat de plugin binnen WinTAK.exe draait, wordt een onafgevangen uitzondering, een geblokkeerde UI-thread of een memorylek in jouw code het probleem van WinTAK — pal voor de operator.
Anatomie van een WinTAK-plugin
Een productieplugin combineert meerdere uitbreidingspunten. MEF-attributen registreren elk onderdeel, en WinTAK maakt knoppen en panelen lui aan (een knop bij de eerste klik, een paneel bij het eerste verzoek), wat de opstart snel houdt.
| Onderdeel | SDK-mechanisme | Typische taak |
|---|---|---|
| Ingang (module) | Prism-IModule geëxporteerd met [ModuleExport(..., InitializationMode = InitializationMode.WhenAvailable)]; services geïnjecteerd met [ImportingConstructor] | Achtergrondservices starten en bij de opstart op gebeurtenissen abonneren, bv. FileDroppedEvent via IEventAggregator |
| Dokbaar paneel | Klasse afgeleid van DockPane met [DockPane(ID, "Name", Content = typeof(View))]; geopend via IDockingManager.GetDockPane(id) | Het paneel waarin de operator werkt; de DockPane vervult tevens de rol van viewmodel |
| Lintknop | Klasse afgeleid van Button met [Button(id, caption, LargeImage = ..., SmallImage = ...)]; overschrijf OnClick() | Een paneel openen, een kaarttool starten, een feed wisselen |
| Kaarttools en overlays | Kaartview-gebeurtenissen zoals MapMouseMove; IMapObjectRenderer-lagen (punt, vorm, team, alarmering, omlijning); IMapObjectFinderService; ILocationService | Punten kiezen, footprints en zones tekenen, objecten op UID vinden, eigen positie lezen |
| CoT-hooks | ICotMessageReceiver (PreviewMessageReceived, MessageReceived, AfterMessageReceived); ICotMessageSender; ICommunicationService (BroadcastCot, SendCot, SendMissionPackage) | CoT consumeren, transformeren en versturen; missiepakketten naar contacten of TAK Server pushen |
| Import | IImportStrategy met [ImportStrategy(fileTypes)] | De Import Manager een nieuw bestandsformaat leren |
| Instellingen | IToolPreference | Pluginopties onder Settings, Tool Preferences |
| Logging | ILogger (van Info tot Fatal) | Diagnostiek naast WinTAKs eigen logs in %AppData%\WinTAK\Logs |
| Metadata | Attributen PluginName, PluginDescription, PluginIcon, PluginDependencies, TakSdkVersion, TakVariant | De plugin een naam geven en zijn afhankelijkheden, SDK-versie en doel-TAK-varianten declareren |
Een minimale module die vijandige tracks volgt en aan een extern systeem doorgeeft, gemodelleerd naar het modulevoorbeeld van de SDK zelf:
using System.ComponentModel.Composition;
using Prism.Mef.Modularity;
using Prism.Modularity;
using WinTak.Common.CoT;
using WinTak.CursorOnTarget.Services;
[ModuleExport(typeof(SensorBridgeModule), InitializationMode = InitializationMode.WhenAvailable)]
public class SensorBridgeModule : IModule
{
private readonly ICotMessageReceiver _receiver;
[ImportingConstructor]
public SensorBridgeModule(ICotMessageReceiver receiver)
{
_receiver = receiver;
}
public void Initialize()
{
_receiver.MessageReceived += OnMessageReceived;
// start the connector to the external sensor or C2 API here, off the UI thread
}
private void OnMessageReceived(object sender, CoTMessageArgument e)
{
if (e.Type == null || !e.Type.StartsWith("a-h-"))
return; // not ours: leave e.Handled alone so other listeners still see it
// validate e.Uid, e.Stale and the point, then queue the track for the bridge
}
}
Let op de Handled-vlag: de SDK-referentie zegt een bericht als afgehandeld te markeren „als en slechts als andere listeners dit bericht niet meer hoeven te bekijken”. Een plugin die CoT stilletjes inslikt, breekt andere plugins en kernhulpmiddelen.
Workflow voor WinTAK-pluginontwikkeling
- Toolchain. Installeer Visual Studio 2022 (Community is genoeg), de WinTAK SDK-build die bij je doelrelease hoort, en de WinTAK-projectsjablonen.
- Project. Begin met de WinTAK-pluginsjabloon, of — zoals de SDK-gids doet — met een WPF User Control Library op .NET Framework 4.8.1. Voeg de NuGet-map van de SDK toe als pakketbron en pin pakketversies op de doelbuild.
- Debuggen. Zet Start external program op
WinTAK.exemet de WinTAK-installatiemap als werkmap, zodat F5 WinTAK met jouw plugin start en breakpoints werken; Attach to Process dekt een draaiende instantie. WinTAK meldt nieuw ontdekte plugins bij de start; schakel die van jou in en hij verschijnt op het tabblad Plugins van het lint. - Testen. Verbind met een lab-TAK Server en speel opgenomen CoT terug, inclusief misvormde en verlopen gebeurtenissen, naast de externe feed. Vink Log Debug Information aan (applicatiemenu, Support) voor meer detail.
- Verpakken. Produceer per ondersteunde WinTAK-build een .wpk, met de pluginversie en doelbuild in de bestandsnaam.
- Ondertekenen. Onderteken assemblies en installers met het codesigningcertificaat van je organisatie; afgeschermde werkplekken met application allow-listing kunnen niet-ondertekende code weigeren. Voor operationele baselines beschrijft tak.gov plugins die via de TAK Product Center-pijplijn worden gebouwd, ondertekend en van sleutels voorzien, met een externe ondertekeningsdienst voor ontwikkelaars buiten contracten om. Bevestig vroeg welk pad je sponsor en variant verwachten.
- Distributie. Kleine vloten installeren via Plug-in Manager uit een gedeelde map; grotere draaien een interne updateserver of een gescripte WinTAK-installatie. De installer ondersteunt stille installaties met gekozen componenten (
ADDLOCAL), maar de quickstartgids waarschuwt dat die waarden tussen versies kunnen wijzigen.
Wat teams als WinTAK-plugins bouwen
- Sensor- en dronefeeds. Telemetrie, sensorpoints of interest en footprints van UAS, radar, akoestische of RF-sensoren. tak.gov beschrijft hoe de UAS Tool positie, sensorpoint of interest, gezichtsveld en video deelt met ATAK- en WinTAK-apparaten; een openbare walkthrough uit 2025 bouwt een MAVLink-positiepaneel voor WinTAK. Zie patronen voor sensorintegratie en dronetelemetrie in TAK.
- C2-bruggen. Tracks, taken en controlemaatregelen vertalen tussen een nationaal of coalitie-C2-systeem en CoT in beide richtingen, met één bron van waarheid per gegevenstype.
- Data-import en -export. WinTAK importeert al KML/KMZ, GPX, shapefiles, DTED en CoT-bestanden; een plugin voegt een eigen formaat toe of exporteert naar een rapportagesysteem. Pakketten volgen de structuur van datapakketten en missiepakketten.
- Missieplanningstools. Gridreferentiegrafieken, routes en checklists. Standaardplugins zoals GRG Builder en ExCheck dekken daar al een deel van af, dus een eigen tool codeert meestal een unit-specifieke procedure.
- Video. WinTAK heeft een ingebouwde videospeler en live videoweergave op de kaart; plugins voegen besturingstoegang voor leveranciersstreams of op metadata gebaseerde footprints toe. Onze gids voor TAK-videointegratie behandelt de streamkant.
Een WinTAK-plugin laten bouwen? Wij ontwikkelen WinTAK- en ATAK-plugins die sensoren, drones en C2-systemen naar TAK bruggen: C#- en WPF-ontwikkeling tegen je doel-WinTAK-build, CoT-mapping en -validatie, .wpk-verpakking en een installatiepad dat bij je accreditatie past. Vertel ons over je integratie →
WinTAK-plugins versus ATAK-plugins
Beide SDK’s bieden vergelijkbare concepten (een kaart, een CoT-bus, UI-oppervlakken, een importpad), maar delen geen binaries: een ATAK-.apk laadt nooit in WinTAK, en omgekeerd.
| Aspect | WinTAK-plugin | ATAK-plugin |
|---|---|---|
| Taal en runtime | C# op .NET Framework (4.8.1 in recente releases), 64-bits Windows | Java of Kotlin op Android |
| UI-framework | WPF/XAML in dokbare panelen, lintknoppen | Android-views, doorgaans in zijdelingse uitklapbare panelen |
| Discovery en levenscyclus | MEF-attributen; Prism-modules geïnitialiseerd bij de opstart; knoppen en panelen lui aangemaakt | Ingangsklasse aangekondigd in de plugindescriptor, met start- en stopcallbacks die componenten registreren en verwijderen |
| Pakket | .wpk, of een optioneel onderdeel van de WinTAK-installer | Ondertekende APK |
| Distributie | Plug-in Manager (lokale map of updateserver), slepen en neerzetten, installer, gescripte installatie | tak.gov, MDM, sideloading, pluginrepository’s |
| Productie-ondertekening | Codesigning plus wat je variant en sponsor eisen | APK-handtekening; productie-ATAK-CIV uit Google Play verwacht via de tak.gov-pijplijn ondertekende plugins |
| Debuggen | Visual Studio: WinTAK.exe starten of eraan koppelen | Android Studio en adb op een apparaat of emulator |
| Versiekoppeling | Eén .wpk per WinTAK-build | Gebouwd tegen een specifieke ATAK SDK-versie |
Moet een capaciteit op beide clients bestaan, deel dan de specificatie in plaats van UI-code: CoT-mappings, het contract van de externe API en gouden testberichten die beide implementaties moeten doorstaan. Zware algoritmes kunnen in een native C- of C++-kern leven, aangeroepen via JNI op Android en P/Invoke op Windows. Onze gids voor ATAK-pluginontwikkeling behandelt de Android-zijde.
Beveiliging van WinTAK-plugins verharden
Een WinTAK-plugin draait met alle rechten van het WinTAK-proces en ziet elk CoT-bericht op de werkplek — behandel haar dus als onderdeel van de vertrouwde rekenbasis.
- Valideer invoer. WinTAK heeft de CoT die je krijgt al geparseerd, maar controleer de waarden: wijs coördinaten buiten bereik, verouderde tijdstempels, onbekende typeprefixen en te grote UID’s of roeptekens af, en beperk de snelheid per bron zodat één doorslaande feed de UI niet blokkeert. Parseer eigen invoer (feeds, bestanden, API-antwoorden) met een
XmlReadermetDtdProcessing.Prohibit, zonderXmlResolveren met een formaatplafond. Geannoteerde CoT-berichtvoorbeelden zijn goede testfixtures. - Minimale rechten. Operators moeten WinTAK als gewone gebruikers draaien. Schrijf plugindata onder het gebruikersprofiel of de ProgramData-map van WinTAK, nooit tijdens runtime in Program Files, en vereis na installatie geen elevatie. Bewaar API-credentials in de Windows-certificaatstore of onder DPAPI, niet als platte tekst in instellingen.
- Geen nieuw aanvalsoppervlak. Geef uitgaande verbindingen de voorkeur boven lokale listeners. In DoD-programma’s moet elke poort, elk protocol en elke dienst die een TAK-applicatie gebruikt via DoD PPSM worden geregistreerd — een nieuwe listener is dus papierwerk én risico. Stuur geen telemetrie van de werkplek.
- Beheerste updates. Serveer .wpk-bestanden vanaf een interne HTTPS-updateserver of een beheerde share, bewaar de vorige versie voor rollback en onderteken wat je levert. Een plugin-update is een codewijziging op een geaccrediteerd systeem.
- Bekende afhankelijkheden. Elk NuGet-pakket dat je toevoegt draait binnen WinTAK: toets het aan de OSV-advisorydatabase en houd een software-bill-of-materials bij. .NET-assemblies zijn makkelijk te decompileren — houd secrets en gevoelige logica uit de client.
Voor manipulatieweerstand aan de Android-zijde zie beveiligingsverharding van TAK-plugins.
Valkuilen bij WinTAK-versiecompatibiliteit
- Eén build, één doel. Beschouw een .wpk uitsluitend als geldig voor de WinTAK-build waarvoor hij is gecompileerd. Als gebruikers van 5.8 naar 5.9 gaan, herbouw dan tegen de 5.9 SDK-pakketten en hertest.
- Meerdere releases per jaar. Het TAK Product Center werkt in een ontwikkelcyclus van 120 dagen met gepubliceerde featurefreezes, dus elke release vergt een geplande herbouw en regressieronde.
- Variantmismatch. CIV- en MIL-builds verschillen. Een plugin kan de varianten waarop hij is gericht declareren (
TakVariant) en de SDK-versie waarmee hij is gebouwd (TakSdkVersion); test op de variant die jouw gebruikers draaien. - Afhankelijkheidsdrift. Richt je exact op de .NET Framework-versie van de host en lever niet je eigen kopie van een assembly die WinTAK al laadt, zoals Prism, in een andere versie. Bindingsconflicten uiten zich als plugins die geruisloos niet laden — lees eerst de bestanden Errors, Log en Fatal in
%AppData%\WinTAK\Logs. - TAKX. Neem niet aan dat een WinTAK-plugin ongewijzigd in TAKX draait; totdat het TAK Product Center een migratiepad voor je variant publiceert, budgetteer een port.
Bouwen of kopen: snel aan een WinTAK-plugin
Als je de capaciteit in weken in plaats van kwartalen nodig hebt, werk deze lijst af:
- Controleer wat bestaat. Bekijk de optionele onderdelen van de installer en de WinTAK-pluginlijst op tak.gov; een plugin van de overheid dekt misschien al de kern van de klus.
- Vraag de leverancier. Sensor- en C2-leveranciers leveren vaak TAK-integraties voor hun eigen producten.
- Bediscussieer de plugin. Als je data TAK Server of het lokale netwerk als CoT kan bereiken, toont WinTAK ze zonder plugin. Bouw er een voor nieuwe UI, lokale verwerking, een nieuw bestandsformaat, apparaatbesturing of een tweerichtingsbrug.
- Budgetteer de levenscyclus. Plan per WinTAK-release een herbouw en regressieronde, een ondertekenings- en distributiepad dat bij je accreditatie past, en support voor elke variant in het veld. Een team dat MEF-compositie, CoT-randgevallen, verpakking en versiepinnen al heeft opgelost, neemt het grootste deel van het planningsrisico vroeg weg.
Een WinTAK-plugin nodig voor je sensoren of C2-systeem?
Wij bouwen WinTAK- en ATAK-plugins die sensor-, drone- en C2-data naar TAK brengen — met vastgepinde builds, CoT-validatie en een uitrolpad dat bij je accreditatie past.
Samengesteld door het engineeringteam van Corvus Intelligence, dat TAK-plugins en CoT-integraties bouwt voor defensiegebruikers; WinTAK SDK-details zijn gecheckt tegen de gepubliceerde SDK-referentie, de WinTAK-gebruikershandleiding en tak.gov-procesdocumenten. Over Corvus Intelligence →