Un plugin WinTAK este o bibliotecă de clase .NET Framework, scrisă în C# cu WPF, pe care WinTAK o descoperă prin Managed Extensibility Framework (MEF) și o încarcă în propriul proces. Poate adăuga butoane de panglică, panouri andocabile, instrumente de hartă, gestionare Cursor on Target (CoT) și servicii în fundal. Îl dezvoltați în Visual Studio împotriva WinTAK SDK corespunzător exactei versiuni WinTAK a utilizatorilor dvs. și îl livrați ca pachet .wpk.

Acest ghid este pentru echipele .NET care încep dezvoltarea de plugin-uri WinTAK și pentru personalul de programe care caută plugin-uri WinTAK. Completează prezentarea noastră despre ingineria plugin-urilor ATAK și WinTAK și WinTAK în TOC. Numele claselor și interfețelor provin din referința API publicată a WinTAK SDK și din ghidul său „Extending WinTAK”; API-ul evoluează între versiuni, deci verificați fiecare nume față de versiunea SDK cu care construiți.

Ce este WinTAK?

WinTAK este membrul Windows al familiei Team Awareness Kit (TAK): o aplicație guvernamentală gata de utilizare (GOTS) și un framework de cartografiere pe care manualul său de utilizare îl descrie ca rulând „atât într-un mediu tactic, cât și într-un mediu de comandă și control”. Împărtășește modelul de evenimente CoT cu ATAK și iTAK (vezi protocolul TAK: CoT XML versus protobuf), se conectează la TAK Server și gestionează straturi, pachete de date, video și chat. Instalatoarele WinTAK semnate îl menționează pe PAR Government ca editor verificat, iar versiunile recente 5.x vizează .NET Framework 4.8.1 pe Windows pe 64 de biți.

Paginile de produse de pe tak.gov listează două linii WinTAK. WinTAK-CIV, „Windows OS Team Awareness Kit for Civilians”, este ediția pe care o primiți prin înregistrare pe tak.gov; binarele TAK-CIV devin publice după aprobare, cu excluderea țărilor sub embargou și a părților de pe Denied Persons List. WinTAK-MIL (Windows Tactical Assault Kit) este restricționat la utilizarea militară americană, iar guvernele străine primesc TAK-MIL doar prin Foreign Military Sales. tak.gov clasifică ATAK-CIV drept EAR99, dar precizează că celelalte linii TAK-CIV sunt încă în evaluare, deci nu presupuneți că WinTAK-CIV are aceeași clasificare. Utilizarea dincolo de testare și evaluare necesită o autorizație de operare (ATO) din partea organizației dvs.

Numerele de versiune WinTAK urmăresc versiunile ATAK. Programul public de lansări tak.gov listează WinTAK 5.8 pentru august 2026 și 5.9 pentru decembrie 2026, fiecare cu înghețarea funcționalităților cu o lună mai devreme. tak.gov listează și TAKX, „împlinirea a două platforme proeminente de comandă și control pe Windows: WinTAK și RaptorX”, cu variantele și lista proprie de plugin-uri. Dacă alegeți un client desktop pentru următorii ani, întrebați mai întâi pe care îl vor desfășura utilizatorii dvs., înainte de a fixa o țintă de plugin.

De unde obțineți plugin-uri WinTAK

Dacă aveți nevoie de plugin-uri WinTAK existente în locul unuia nou, căutați în patru locuri:

  • Instalatorul WinTAK. Plugin-urile opționale care se potrivesc cu build-ul sunt incluse și bifate pe o listă în timpul instalării; rulați din nou instalatorul și alegeți Modify pentru a adăuga altele. Ghidul de pornire rapidă dă Data Sync și ExCheck ca exemple.
  • Listele de plugin-uri tak.gov. tak.gov întreține o pagină de plugin-uri WinTAK, iar unele plugin-uri se livrează ca fișiere .wpk separate. Aveți nevoie de un cont, iar ce puteți descărca depinde de rolul dvs.
  • Producătorii de hardware și software. Multe plugin-uri există pentru că o companie își dorește senzorul, radioul sau serviciul său în TAK; TAK Product Center notează că astfel de lucrări în afara contractelor (IRAD) urmăresc de obicei vânzarea unui sistem asociat.
  • Proiecte comunitare. Există, dar mult mai puține decât pentru ATAK; ghidul nostru despre ecosistemul TAK open source acoperă ce este gratuit.

Manualul de utilizare WinTAK listează trei moduri de a instala un plugin: Plug-in Manager din meniul aplicației, tragerea unui fișier .wpk pe fereastra WinTAK (dublu-clickul funcționează și el) sau selectarea lui în timpul instalării WinTAK. Plug-in Manager preia plugin-uri dintr-un director local sau de pe un server web de actualizări, pentru care un administrator rulează utilitarul wpkbuilder pentru a crea un catalog plugins.json; plugin-urile dintr-un director local configurat se instalează automat la pornirea WinTAK. Două verificări contează mai mult decât funcționalitățile: .wpk-ul trebuie construit pentru exact build-ul dvs. WinTAK și trebuie aprobat pentru varianta și rețeaua dvs.

WinTAK SDK: acces, stivă și instrumente

WinTAK SDK vine de la tak.gov, iar accesul depinde de cine sunteți. Un tutorial public de dezvoltator din martie 2025 descărca WinTAK-CIV SDK (atunci versiunea 5.3) și șabloanele de proiect Visual Studio (un fișier .vsix) din resursele pentru dezvoltatori de pe pagina produsului WinTAK-CIV. FAQ-ul tak.gov este mai strict: „Dacă aveți un sponsor guvernamental, vi se permite accesul la kiturile de dezvoltare software (SDK) ATAK sau WinTAK”. Procesul de dezvoltare publicat al TAK Product Center le oferă dezvoltatorilor guvernamentali și contractorilor lor acces la depozitele unui Standard SDK (sponsori non-DoD) sau unui Military SDK (sponsori DoD). Ambele conțin documente de control al interfețelor, cod sursă exemplu și un build de dezvoltator fără cheie al aplicației-gazdă care afișează un filigran „Development Build”.

Stiva este clasicul desktop Windows, nu .NET-ul modern:

  • .NET Framework și C#. Plugin-urile vizează framework-ul gazdei (4.8.1 în versiunile recente). Bibliotecile construite doar pentru .NET 6 sau 8 nu se încarcă în proces; cele .NET Standard 2.0 da.
  • WPF și XAML pentru fiecare vizualizare, legate la view-model-uri.
  • MEF (System.ComponentModel.Composition) pentru descoperire și injecție de dependențe: WinTAK scanează assembly-urile plugin-ului după clase exportate, atribuite — „convenție în loc de configurație”, în cuvintele ghidului SDK.
  • Prism pentru module și agregatorul de evenimente.
  • Pachete NuGet care conțin assembly-urile WinTAK. Ghidurile SDK mai vechi foloseau un pachet WinTak-Dependencies dintr-un feed TAKMaps Artifactory; instalările SDK actuale plasează un dosar NuGet în instalarea WinTAK, pe care îl adăugați ca sursă locală de pachete.

Pentru că plugin-ul rulează în interiorul WinTAK.exe, o excepție netratată, un fir UI blocat sau o scurgere de memorie în codul dvs. devine problema WinTAK, sub ochii operatorului.

Anatomia unui plugin WinTAK

Un plugin de producție combină mai multe puncte de extensie. Atributele MEF înregistrează fiecare parte, iar WinTAK creează butoanele și panourile leneș (un buton la primul click, un panou la prima cerere), ceea ce menține pornirea rapidă.

ParteMecanism SDKSarcină tipică
Punct de intrare (modul)IModule Prism exportat cu [ModuleExport(..., InitializationMode = InitializationMode.WhenAvailable)]; servicii injectate cu [ImportingConstructor]Pornirea serviciilor în fundal și abonarea la evenimente la start, de ex. FileDroppedEvent prin IEventAggregator
Panou andocabilClasă derivată din DockPane cu [DockPane(ID, "Name", Content = typeof(View))]; deschis prin IDockingManager.GetDockPane(id)Panoul în care lucrează operatorul; DockPane îndeplinește și rolul de view-model
Buton de panglicăClasă derivată din Button cu [Button(id, caption, LargeImage = ..., SmallImage = ...)]; suprascrieți OnClick()Deschide un panou, pornește un instrument de hartă, comută un flux
Instrumente de hartă și straturiEvenimente de vizualizare a hărții precum MapMouseMove; straturi IMapObjectRenderer (punct, formă, echipă, alertă, contur); IMapObjectFinderService; ILocationServiceAlege puncte, desenează urme și zone, găsește elemente după UID, citește propria poziție
Cârlige CoTICotMessageReceiver (PreviewMessageReceived, MessageReceived, AfterMessageReceived); ICotMessageSender; ICommunicationService (BroadcastCot, SendCot, SendMissionPackage)Consumă, transformă și emite CoT; trimite pachete de misiune către contacte sau TAK Server
ImportIImportStrategy cu [ImportStrategy(fileTypes)]Învăța Import Manager un nou format de fișier
SetăriIToolPreferenceOpțiunile plugin-ului sub Settings, Tool Preferences
JurnalizareILogger (de la Info la Fatal)Diagnostică lângă jurnalele proprii WinTAK în %AppData%\WinTAK\Logs
MetadateAtributele PluginName, PluginDescription, PluginIcon, PluginDependencies, TakSdkVersion, TakVariantDenumește plugin-ul și îi declară dependențele, versiunea SDK și variantele TAK vizate

Un modul minimal care urmărește piste inamice și le predă unui sistem extern, modelat după propriul exemplu de modul din SDK:

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
    }
}

Atenție la indicatorul Handled: referința SDK spune să marcați un mesaj ca tratat „dacă și numai dacă ceilalți ascultători nu trebuie să examineze acest mesaj”. Un plugin care înghite CoT în tăcere strică alte plugin-uri și instrumentele de bază.

Arhitectura de referință a unui plugin WinTAK: gazda WinTAK (conexiuni la server, mesagerie CoT, motorul hărții, andocare și preferințe) legată prin MEF de un plugin propriu (serviciu în fundal, gestionar CoT, instrument de hartă, panou andocabil), conectată prin TLS la TAK Server și la un senzor extern sau API C2, iar jos calea de construire, împachetare și implementare.
Un plugin WinTAK rulează în interiorul procesului WinTAK: MEF leagă părțile lui de serviciile gazdei, CoT curge prin gazdă către TAK Server, iar fiecare versiune se construiește, se împachetează ca .wpk și se implementează pentru fiecare build WinTAK.

Fluxul de dezvoltare a unui plugin WinTAK

  1. Lanț de instrumente. Instalați Visual Studio 2022 (Community este suficient), build-ul WinTAK SDK corespunzător versiunii țintă și șabloanele de proiect WinTAK.
  2. Proiect. Porniți de la șablonul de plugin WinTAK sau de la o bibliotecă WPF User Control Library pentru .NET Framework 4.8.1, cum face ghidul SDK. Adăugați dosarul NuGet al SDK-ului ca sursă de pachete și fixați versiunile pachetelor pentru build-ul țintă.
  3. Depanare. Setați Start external program pe WinTAK.exe cu dosarul de instalare WinTAK ca director de lucru, astfel încât F5 să pornească WinTAK cu plugin-ul dvs. și punctele de întrerupere să funcționeze; Attach to Process acoperă o instanță în rulare. WinTAK raportează plugin-urile nou descoperite la pornire; activați-l pe al dvs. și apare pe fila Plugins a panglicii.
  4. Testare. Conectați-vă la un TAK Server de laborator și redați CoT înregistrat, inclusiv evenimente malformate și expirate, alături de fluxul extern. Bifați Log Debug Information (meniul aplicației, Support) pentru mai multe detalii.
  5. Împachetare. Produceți câte un .wpk pentru fiecare build WinTAK suportat, cu versiunea plugin-ului și build-ul țintă în numele fișierului.
  6. Semnare. Semnați assembly-urile și instalatoarele cu certificatul de semnare de cod al organizației dvs.; stațiile de lucru blocate cu liste de aplicații permise pot refuza codul nesemnat. Pentru bazele operaționale, tak.gov descrie plugin-uri construite, semnate și cheiate prin pipeline-ul TAK Product Center, cu un serviciu de semnare terț pentru dezvoltatorii în afara contractelor. Confirmați din timp ce cale așteaptă sponsorul și varianta dvs.
  7. Distribuție. Parcurile mici instalează dintr-un dosar partajat prin Plug-in Manager; cele mari rulează un server intern de actualizări sau o instalare WinTAK scriptată. Instalatorul acceptă instalări silențioase cu componente selectate (ADDLOCAL), dar ghidul de pornire rapidă avertizează că acele valori se pot schimba între versiuni.

Ce construiesc echipele ca plugin-uri WinTAK

  • Fluxuri de senzori și drone. Telemetrie, puncte de interes ale senzorilor și urme de la UAS, radare, senzori acustici sau RF. tak.gov descrie instrumentul său UAS Tool ca partajând poziția, punctul de interes al senzorului, câmpul vizual și video cu dispozitive ATAK și WinTAK; un tutorial public din 2025 construiește un panou de poziții MAVLink pentru WinTAK. Vezi tiparele de integrare a senzorilor și telemetria dronelor în TAK.
  • Punti C2. Traducerea pistelor, sarcinilor și măsurilor de control între un sistem C2 național sau de coaliție și CoT, în ambele sensuri, cu o singură sursă de adevăr pentru fiecare tip de date.
  • Import și export de date. WinTAK importă deja KML/KMZ, GPX, shapefile, DTED și fișiere CoT; un plugin adaugă un format proprietar sau exportă către un sistem de raportare. Pachetele urmează structura pachetelor de date și de misiune.
  • Instrumente de planificare a misiunii. Grafice de referință în grilă GRG, rute și liste de verificare. Plugin-uri standard precum GRG Builder și ExCheck acoperă deja o parte din asta, deci o unealtă personalizată codifică de obicei o procedură specifică unității.
  • Video. WinTAK are un player video integrat și afișarea video în direct pe hartă; plugin-urile adaugă controlul fluxurilor producătorului sau urme generate de metadate. Ghidul nostru de integrare video TAK acoperă partea de fluxuri.

Aveți nevoie de un plugin WinTAK construit? Dezvoltăm plugin-uri WinTAK și ATAK care pun punți între senzori, drone și sisteme C2 către TAK: dezvoltare C# și WPF pentru build-ul dvs. WinTAK țintă, maparea și validarea CoT, împachetarea .wpk și o cale de instalare care se potrivește acreditării dvs. Spuneți-ne despre integrarea dvs. →

Plugin-uri WinTAK versus plugin-uri ATAK

Cele două SDK-uri expun idei similare (o hartă, o magistrală CoT, suprafețe UI, o cale de import), dar nu au binare în comun: un .apk ATAK nu se încarcă niciodată în WinTAK, și invers.

AspectPlugin WinTAKPlugin ATAK
Limbă și runtimeC# pe .NET Framework (4.8.1 în versiunile recente), Windows pe 64 de bițiJava sau Kotlin pe Android
Framework UIWPF/XAML în panouri andocabile, butoane de panglicăVizualizări Android, de regulă în panouri laterale desfășurabile
Descoperire și ciclu de viațăAtribute MEF; module Prism inițializate la pornire; butoane și panouri create leneșClasa de intrare declarată în descriptorul plugin-ului, cu apeluri inversate de start și stop care înregistrează și elimină componente
Pachet.wpk sau componentă opțională a instalatorului WinTAKAPK semnat
DistribuțiePlug-in Manager (dosar local sau server de actualizări), drag-and-drop, instalator, instalare scriptatătak.gov, MDM, sideloading, depozite de plugin-uri
Semnare de producțieSemnarea codului plus ce cer varianta și sponsorul dvs.Semnătură APK; ATAK-CIV de producție din Google Play așteaptă plugin-uri semnate prin pipeline-ul tak.gov
DepanareVisual Studio: porniți sau atașați-vă la WinTAK.exeAndroid Studio și adb pe dispozitiv sau emulator
Cuplare de versiuniUn .wpk pentru fiecare build WinTAKConstruit pentru o anumită versiune ATAK SDK

Dacă o capabilitate trebuie să existe pe ambele clienți, partajați specificația, nu codul UI: mapările CoT, contractul API-ului extern și mesajele de test „de aur” pe care ambele implementări trebuie să le treacă. Algoritmii grei pot trăi într-un nucleu nativ C sau C++, apelat prin JNI pe Android și P/Invoke pe Windows. Ghidul nostru de dezvoltare a plugin-urilor ATAK acoperă partea de Android.

Consolidarea securității plugin-urilor WinTAK

Un plugin WinTAK rulează cu toate privilegiile procesului WinTAK și vede fiecare mesaj CoT de pe stația de lucru — tratați-l ca parte a bazei de calcul de încredere.

  • Validați intrarea. WinTAK a analizat deja CoT-ul pe care vi-l predă, dar verificați valorile: respingeți coordonatele în afara intervalului, marcajele de timp expirate din trecut, prefixele de tip necunoscute și UID-urile sau indicativele prea mari, și limitați rata pe sursă, ca un flux necontrolat să nu înghețe UI-ul. Analizați propriile intrări (fluxuri, fișiere, răspunsuri API) cu un XmlReader cu DtdProcessing.Prohibit, fără XmlResolver și cu o limită de dimensiune. Exemplele annotate de mesaje CoT sunt fixture-uri bune de test.
  • Privilegiu minim. Operatorii ar trebui să ruleze WinTAK ca utilizatori standard. Scrieți datele plugin-ului în profilul utilizatorului sau în dosarul ProgramData al WinTAK, niciodată în Program Files în timpul rulării, și nu cereți elevare după instalare. Păstrați credențialele API în depozitul de certificate Windows sau sub DPAPI, nu în clar în setări.
  • Fără suprafață de atac nouă. Preferați conexiunile de ieșire ascultătorilor locali. În programele DoD, fiecare port, protocol și serviciu folosit de o aplicație TAK trebuie înregistrat prin DoD PPSM — deci un ascultător nou înseamnă și hârtii, și risc. Nu trimiteți telemetrie în afara stației de lucru.
  • Actualizări controlate. Serviți fișierele .wpk de pe un server intern de actualizări HTTPS sau de pe o partajare controlată, păstrați versiunea anterioară pentru revenire și semnați ce livrați. O actualizare de plugin este o schimbare de cod pe un sistem acreditat.
  • Dependențe cunoscute. Fiecare pachet NuGet adăugat rulează în interiorul WinTAK: verificați-l împotriva bazei de recomandări OSV și țineți o listă a componentelor software. Assembly-urile .NET se decompilează ușor — țineți secretele și logica sensibilă în afara clientului.

Pentru rezistența la manipulare pe partea de Android, vezi consolidarea securității plugin-urilor TAK.

Capcane de compatibilitate a versiunilor WinTAK

  • Un build, o țintă. Tratați un .wpk ca valid doar pentru build-ul WinTAK pentru care a fost compilat. Când utilizatorii trec de la 5.8 la 5.9, reconstruiți pentru pachetele SDK 5.9 și retestați.
  • Mai multe versiuni pe an. TAK Product Center lucrează într-un ciclu de dezvoltare de 120 de zile cu înghețări publicate ale funcționalităților, deci fiecare versiune cere o reconstruire planificată și o trecere de regresie.
  • Nepotrivirea variantelor. Build-urile CIV și MIL diferă. Un plugin poate declara variantele vizate (TakVariant) și versiunea SDK cu care a fost construit (TakSdkVersion); testați pe varianta pe care o rulează utilizatorii dvs.
  • Deriva dependențelor. Vizați exact versiunea .NET Framework a gazdei și nu livrați propria copie a unui assembly pe care WinTAK îl încarcă deja, precum Prism, într-o altă versiune. Conflictele de legare se văd ca plugin-uri care nu se încarcă în tăcere — citiți mai întâi fișierele Errors, Log și Fatal din %AppData%\WinTAK\Logs.
  • TAKX. Nu presupuneți că un plugin WinTAK va rula neschimbat în TAKX; până când TAK Product Center publică o cale de migrare pentru varianta dvs., bugetați un port.

Construiți sau cumpărați: un plugin WinTAK repede

Dacă aveți nevoie de capabilitate în câteva săptămâni, nu trimestre, parcurgeți această listă:

  1. Verificați ce există. Examinați componentele opționale ale instalatorului și lista de plugin-uri WinTAK de pe tak.gov; un plugin aparținând guvernului poate acoperi deja nucleul sarcinii.
  2. Întrebați producătorul. Producătorii de senzori și sisteme C2 livrează adesea integrări TAK pentru propriile produse.
  3. Puneți la îndoială plugin-ul. Dacă datele dvs. pot ajunge la TAK Server sau în rețeaua locală ca CoT, WinTAK le afișează fără plugin. Construiți unul pentru UI nou, procesare locală, un nou format de fișier, controlul dispozitivelor sau o punte bidirecțională.
  4. Bugetați ciclul de viață. Planificați o reconstruire și o trecere de regresie pentru fiecare versiune WinTAK, o cale de semnare și distribuție potrivită acreditării dvs. și suport pentru fiecare variantă din teren. O echipă care a rezolvat deja compoziția MEF, cazurile limită CoT, împachetarea și fixarea versiunilor elimină devreme cea mai mare parte a riscului de calendar.

Aveți nevoie de un plugin WinTAK pentru senzorii sau sistemul dvs. C2?

Construim plugin-uri WinTAK și ATAK care aduc datele de senzori, drone și C2 în TAK — cu build-uri fixate pe versiune, validare CoT și o cale de implementare potrivită acreditării dvs.

Construiți cu noi un plugin WinTAK → WinTAK în TOC →

Pregătit de echipa de inginerie Corvus Intelligence, care construiește plugin-uri TAK și integrări CoT pentru utilizatori din apărare; detaliile WinTAK SDK au fost verificate față de referința SDK publicată, manualul de utilizare WinTAK și documentele de proces tak.gov. Despre Corvus Intelligence →