Un plugin WinTAK est une bibliothèque de classes .NET Framework, écrite en C# avec WPF, que WinTAK découvre via le Managed Extensibility Framework (MEF) et charge dans son propre processus. Il peut ajouter des boutons de ruban, des panneaux ancrables, des outils cartographiques, des gestionnaires Cursor on Target (CoT) et des services d’arrière-plan. Vous le développez dans Visual Studio avec le SDK WinTAK correspondant à la version exacte de WinTAK de vos utilisateurs et vous le livrez sous forme de paquet .wpk.

Ce guide s’adresse aux équipes .NET qui démarrent le développement de plugins WinTAK et aux personnels de programme qui recherchent des plugins WinTAK existants. Il complète notre panorama de l’ingénierie des plugins ATAK et WinTAK et WinTAK dans le PC. Les noms de classes et d’interfaces proviennent de la référence d’API du SDK WinTAK publiée et de son guide « Extending WinTAK » ; l’API évolue entre les versions, vérifiez donc chaque nom par rapport à la version du SDK avec laquelle vous compilez.

Qu’est-ce que WinTAK ?

WinTAK est le membre Windows de la famille Team Awareness Kit (TAK) : une application gouvernementale prête à l’emploi (GOTS) et un framework cartographique que son manuel utilisateur décrit comme fonctionnant « à la fois dans un environnement tactique et dans un environnement de commandement et de contrôle ». Il partage le modèle d’événements CoT d’ATAK et d’iTAK (voir protocole TAK : CoT XML et protobuf), se connecte à TAK Server et gère les couches, les paquets de données, la vidéo et le chat. Les installateurs WinTAK signés désignent PAR Government comme éditeur vérifié, et les versions 5.x récentes ciblent .NET Framework 4.8.1 sur Windows 64 bits.

Les pages produits de tak.gov listent deux gammes WinTAK. WinTAK-CIV, « Windows OS Team Awareness Kit for Civilians », est l’édition obtenue en s’enregistrant sur tak.gov ; les binaires TAK-CIV sont publics après approbation, à l’exclusion des pays sous embargo et des parties inscrites sur la Denied Persons List. WinTAK-MIL (le Windows Tactical Assault Kit) est réservé à l’usage militaire américain, et les gouvernements étrangers n’obtiennent TAK-MIL que par les Foreign Military Sales. tak.gov classe ATAK-CIV comme EAR99 mais indique que les autres gammes TAK-CIV sont encore en cours d’évaluation : ne supposez donc pas que WinTAK-CIV a la même classification. Tout usage au-delà des tests et évaluations requiert une autorisation d’exploitation (ATO) de votre organisation.

Les numéros de version de WinTAK suivent ceux d’ATAK. Le calendrier de versions public de tak.gov annonce WinTAK 5.8 pour août 2026 et 5.9 pour décembre 2026, chacune avec un gel des fonctionnalités un mois plus tôt. tak.gov liste aussi TAKX, « l’aboutissement de deux grandes plateformes Windows de commandement et de contrôle : WinTAK et RaptorX », avec ses propres variantes et son catalogue de plugins. Si vous choisissez un client de bureau pour les prochaines années, demandez d’abord lequel vos utilisateurs déploieront avant de figer une cible de plugin.

Où trouver des plugins WinTAK

Si vous avez besoin de plugins WinTAK existants plutôt que d’en créer un, regardez à quatre endroits :

  • L’installateur WinTAK. Des plugins optionnels correspondant à la build sont intégrés et cochés sur une liste pendant l’installation ; relancez l’installateur et choisissez Modify pour en ajouter d’autres. Le guide de démarrage rapide cite Data Sync et ExCheck comme exemples.
  • Les catalogues de plugins tak.gov. tak.gov tient une page de plugins WinTAK, et certains plugins sont livrés en fichiers .wpk séparés. Il faut un compte, et ce que vous pouvez télécharger dépend de votre rôle.
  • Les fabricants de matériel et de logiciel. Nombre de plugins existent parce qu’une société veut voir son capteur, sa radio ou son service dans TAK ; le TAK Product Center note que ces travaux hors contrat (IRAD) visent généralement à vendre un système associé.
  • Les projets communautaires. Ils existent, mais bien moins nombreux que pour ATAK ; notre guide de l’écosystème TAK open source couvre ce qui est gratuit.

Le manuel utilisateur de WinTAK liste trois façons d’installer un plugin : le Plug-in Manager dans le menu Application, le glisser-déposer d’un fichier .wpk sur la fenêtre WinTAK (le double-clic fonctionne aussi), ou sa sélection pendant l’installation de WinTAK. Le Plug-in Manager récupère les plugins depuis un répertoire local ou un serveur de mise à jour web, pour lequel un administrateur exécute l’utilitaire wpkbuilder afin de créer un catalogue plugins.json ; les plugins d’un répertoire local configuré s’installent automatiquement au démarrage de WinTAK. Deux vérifications comptent plus que les fonctionnalités : le .wpk doit être construit pour votre build WinTAK exact et doit être autorisé pour votre variante et votre réseau.

Le SDK WinTAK : accès, pile et outillage

Le SDK WinTAK vient de tak.gov, et l’accès dépend de qui vous êtes. Un pas-à-pas public de développeur de mars 2025 téléchargeait le SDK WinTAK-CIV (alors en version 5.3) et les modèles de projet Visual Studio (un fichier .vsix) depuis les ressources développeur de la page produit WinTAK-CIV. La FAQ de tak.gov est plus stricte : « Si vous avez un sponsor gouvernemental, vous êtes autorisé à accéder aux kits de développement logiciel (SDK) ATAK ou WinTAK ». Le processus de développement publié du TAK Product Center donne aux développeurs gouvernementaux et à leurs sous-traitants un accès aux dépôts d’un Standard SDK (sponsors hors DoD) ou d’un Military SDK (sponsors DoD). Les deux contiennent des documents de contrôle des interfaces, du code source d’exemple et une build de développement sans clé de l’application hôte qui affiche un filigrane « Development Build ».

La pile est celle du bureau Windows classique, pas du .NET moderne :

  • .NET Framework et C#. Les plugins ciblent le framework de l’hôte (4.8.1 dans les versions récentes). Les bibliothèques construites uniquement pour .NET 6 ou 8 ne se chargeront pas in-process ; celles en .NET Standard 2.0 si.
  • WPF et XAML pour chaque vue, liés aux modèles de vue.
  • MEF (System.ComponentModel.Composition) pour la découverte et l’injection de dépendances : WinTAK analyse les assemblys du plugin à la recherche de classes exportées et attribuées — « la convention plutôt que la configuration », selon les mots du guide du SDK.
  • Prism pour les modules et l’agrégateur d’événements.
  • Des paquets NuGet embarquant les assemblys WinTAK. Les anciens guides du SDK utilisaient un paquet WinTak-Dependencies d’un flux TAKMaps Artifactory ; les installations actuelles du SDK placent un dossier NuGet dans l’installation WinTAK, à ajouter comme source de paquets locale.

Parce que le plugin s’exécute dans WinTAK.exe, une exception non gérée, un thread UI bloqué ou une fuite de mémoire dans votre code devient le problème de WinTAK, sous les yeux de l’opérateur.

Anatomie d’un plugin WinTAK

Un plugin de production combine plusieurs points d’extension. Les attributs MEF enregistrent chaque partie, et WinTAK crée les boutons et les panneaux paresseusement (un bouton au premier clic, un panneau à la première demande), ce qui garde un démarrage rapide.

PartieMécanisme du SDKRôle typique
Point d’entrée (module)IModule Prism exporté avec [ModuleExport(..., InitializationMode = InitializationMode.WhenAvailable)] ; services injectés via [ImportingConstructor]Démarrer des services d’arrière-plan et s’abonner aux événements au lancement, p. ex. FileDroppedEvent via IEventAggregator
Panneau ancrableClasse dérivant de DockPane avec [DockPane(ID, "Name", Content = typeof(View))] ; ouverte via IDockingManager.GetDockPane(id)Le panneau dans lequel travaille l’opérateur ; la DockPane sert aussi de modèle de vue
Bouton de rubanClasse dérivant de Button avec [Button(id, caption, LargeImage = ..., SmallImage = ...)] ; redéfinissez OnClick()Ouvrir un panneau, lancer un outil cartographique, basculer un flux
Outils cartographiques et couchesÉvénements de la vue cartographique tels que MapMouseMove ; couches IMapObjectRenderer (point, forme, équipe, alerte, contour) ; IMapObjectFinderService ; ILocationServiceChoisir des points, tracer des empreintes et des zones, trouver des objets par UID, lire sa propre position
Crochets CoTICotMessageReceiver (PreviewMessageReceived, MessageReceived, AfterMessageReceived) ; ICotMessageSender ; ICommunicationService (BroadcastCot, SendCot, SendMissionPackage)Consommer, transformer et émettre du CoT ; pousser des paquets de mission vers des contacts ou TAK Server
ImportIImportStrategy avec [ImportStrategy(fileTypes)]Apprendre un nouveau format de fichier à l’Import Manager
ParamètresIToolPreferenceOptions du plugin sous Settings, Tool Preferences
JournalisationILogger (de Info à Fatal)Diagnostic à côté des journaux de WinTAK dans %AppData%\WinTAK\Logs
MétadonnéesAttributs PluginName, PluginDescription, PluginIcon, PluginDependencies, TakSdkVersion, TakVariantNommer le plugin et déclarer ses dépendances, sa version de SDK et les variantes TAK ciblées

Un module minimal qui surveille les pistes hostiles et les transmet à un système externe, calqué sur l’exemple de module du SDK lui-même :

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

Attention au drapeau Handled : la référence du SDK dit de marquer un message comme traité « si et seulement si d’autres écouteurs n’ont pas besoin d’examiner ce message ». Un plugin qui avale le CoT en silence casse d’autres plugins et les outils de base.

Architecture de référence d’un plugin WinTAK : l’hôte WinTAK (connexions serveur, messagerie CoT, moteur cartographique, ancrage et préférences) relié via MEF à un plugin personnalisé (service d’arrière-plan, gestionnaire CoT, outil cartographique, panneau ancrable), relié à TAK Server en TLS et à un capteur ou une API C2 externe, avec en bas la chaîne de construction, packaging et déploiement.
Un plugin WinTAK s’exécute dans le processus WinTAK : MEF relie ses parties aux services de l’hôte, le CoT transite par l’hôte vers TAK Server, et chaque version est construite, empaquetée en .wpk et déployée par build WinTAK.

Flux de travail de développement d’un plugin WinTAK

  1. Chaîne d’outils. Installez Visual Studio 2022 (Community suffit), la build du SDK WinTAK correspondant à votre version cible, et les modèles de projet WinTAK.
  2. Projet. Partez du modèle de plugin WinTAK, ou d’une bibliothèque WPF User Control Library ciblant .NET Framework 4.8.1 comme le fait le guide du SDK. Ajoutez le dossier NuGet du SDK comme source de paquets et épinglez les versions de paquets à la build cible.
  3. Débogage. Réglez Start external program sur WinTAK.exe avec le dossier d’installation de WinTAK comme répertoire de travail, pour que F5 lance WinTAK avec votre plugin et que les points d’arrêt fonctionnent ; Attach to Process couvre une instance en cours. WinTAK signale les plugins nouvellement découverts au démarrage ; activez le vôtre et il apparaît dans l’onglet Plugins du ruban.
  4. Tests. Connectez-vous à un TAK Server de laboratoire et rejouez du CoT enregistré, y compris des événements mal formés et périmés, à côté du flux externe. Cochez Log Debug Information (menu Application, Support) pour plus de détails.
  5. Packaging. Produisez un .wpk par build WinTAK prise en charge, avec la version du plugin et la build cible dans le nom de fichier.
  6. Signature. Signez les assemblys et les installateurs avec le certificat de signature de code de votre organisation ; des postes verrouillés avec listes blanches d’applications peuvent refuser le code non signé. Pour les socles opérationnels, tak.gov décrit des plugins construits, signés et clés via le pipeline du TAK Product Center, avec un service de signature tiers pour les développeurs hors contrat. Confirmez tôt la voie attendue par votre sponsor et votre variante.
  7. Distribution. Les petits parcs installent depuis un dossier partagé via le Plug-in Manager ; les plus grands tiennent un serveur de mise à jour interne ou une installation WinTAK scriptée. L’installateur gère les installations silencieuses avec des composants choisis (ADDLOCAL), mais le guide de démarrage rapide prévient que ces valeurs peuvent changer entre versions.

Ce que les équipes construisent en plugins WinTAK

  • Flux de capteurs et de drones. Télémétrie, points d’intérêt capteurs et empreintes de drones, radars, capteurs acoustiques ou RF. tak.gov décrit son UAS Tool comme partageant position, point d’intérêt capteur, champ de vision et vidéo avec les appareils ATAK et WinTAK ; une présentation publique de 2025 construit un panneau de position MAVLink pour WinTAK. Voir les schémas d’intégration capteurs et la télémétrie de drone dans TAK.
  • Ponts C2. Traduction des pistes, tâches et mesures de contrôle entre un système C2 national ou de coalition et le CoT, dans les deux sens, avec une seule source de vérité par type de données.
  • Import et export de données. WinTAK importe déjà le KML/KMZ, le GPX, les shapefiles, le DTED et les fichiers CoT ; un plugin ajoute un format propriétaire ou exporte vers un système de rapportage. Les paquets suivent la structure des paquets de données et de mission.
  • Outils de planification de mission. Graphiques de maillage GRG, itinéraires et listes de contrôle. Des plugins standard comme GRG Builder et ExCheck couvrent déjà une partie de cela, donc un outil sur mesure encode en général une procédure propre à l’unité.
  • Vidéo. WinTAK intègre un lecteur vidéo et l’affichage de vidéo en direct sur la carte ; les plugins ajoutent le contrôle de flux constructeur ou des empreintes pilotées par les métadonnées. Notre guide d’intégration vidéo TAK couvre le côté flux.

Besoin d’un plugin WinTAK développé ? Nous développons des plugins WinTAK et ATAK qui relient capteurs, drones et systèmes C2 à TAK : développement C# et WPF contre votre build WinTAK cible, mapping et validation CoT, packaging .wpk et un chemin d’installation adapté à votre accréditation. Parlez-nous de votre intégration →

Plugins WinTAK contre plugins ATAK

Les deux SDK exposent des idées semblables (une carte, un bus CoT, des surfaces d’interface, un chemin d’import) mais ne partagent aucun binaire : un .apk ATAK ne se charge jamais dans WinTAK, et réciproquement.

AspectPlugin WinTAKPlugin ATAK
Langage et exécutionC# sur .NET Framework (4.8.1 dans les versions récentes), Windows 64 bitsJava ou Kotlin sur Android
Framework d’interfaceWPF/XAML dans des panneaux ancrables, boutons de rubanVues Android, typiquement dans des panneaux latéraux déroulants
Découverte et cycle de vieAttributs MEF ; modules Prism initialisés au démarrage ; boutons et panneaux créés paresseusementClasse d’entrée déclarée dans le descripteur du plugin, avec des rappels de démarrage et d’arrêt qui enregistrent et retirent des composants
Paquet.wpk, ou composant optionnel de l’installateur WinTAKAPK signé
DistributionPlug-in Manager (dossier local ou serveur de mise à jour), glisser-déposer, installateur, installation scriptéetak.gov, MDM, chargement latéral, dépôts de plugins
Signature de productionSignature de code plus ce qu’exigent votre variante et votre sponsorSignature APK ; l’ATAK-CIV de production de Google Play attend des plugins signés via le pipeline tak.gov
DébogageVisual Studio : lancer ou s’attacher à WinTAK.exeAndroid Studio et adb sur appareil ou émulateur
Couplage de versionsUn .wpk par build WinTAKConstruit contre une version précise du SDK ATAK

Si une capacité doit exister sur les deux clients, partagez la spécification plutôt que le code d’interface : mappings CoT, contrat de l’API externe et messages de test dorés que les deux implémentations doivent passer. Les algorithmes lourds peuvent vivre dans un cœur natif en C ou C++, appelé via JNI sur Android et P/Invoke sur Windows. Notre guide de développement de plugins ATAK couvre le côté Android.

Durcissement de sécurité des plugins WinTAK

Un plugin WinTAK s’exécute avec tous les privilèges du processus WinTAK et voit chaque message CoT du poste de travail : traitez-le comme partie de la base de calcul de confiance.

  • Validez les entrées. WinTAK a déjà analysé le CoT qu’il vous remet, mais vérifiez les valeurs : rejetez les coordonnées hors bornes, les horodatages périmés, les préfixes de type inconnus et les UID ou indicatifs surdimensionnés, et limitez le débit par source pour qu’un flux déréglé ne gèle pas l’interface. Analysez vos propres entrées (flux, fichiers, réponses d’API) avec un XmlReader en DtdProcessing.Prohibit, sans XmlResolver et avec un plafond de taille. Les exemples annotés de messages CoT font de bonnes données de test.
  • Moindre privilège. Les opérateurs doivent lancer WinTAK en utilisateurs standard. Écrivez les données du plugin dans le profil utilisateur ou le dossier ProgramData de WinTAK, jamais dans Program Files à l’exécution, et n’exigez pas d’élévation après installation. Gardez les identifiants d’API dans le magasin de certificats Windows ou sous DPAPI, pas en clair dans les paramètres.
  • Pas de nouvelle surface d’attaque. Préférez les connexions sortantes aux écouteurs locaux. Dans les programmes DoD, chaque port, protocole et service utilisé par une application TAK doit être enregistré via DoD PPSM : un nouvel écouteur est donc de la paperasse autant qu’un risque. N’envoyez aucune télémétrie hors du poste.
  • Mises à jour maîtrisées. Servez les fichiers .wpk depuis un serveur de mise à jour HTTPS interne ou un partage contrôlé, gardez la version précédente pour retour arrière et signez ce que vous livrez. Une mise à jour de plugin est un changement de code sur un système accrédité.
  • Dépendances connues. Chaque paquet NuGet ajouté s’exécute dans WinTAK : vérifiez-le contre la base de recommandations OSV et tenez une nomenclature logicielle. Les assemblys .NET se décompilent facilement : gardez secrets et logique sensible hors du client.

Pour la résistance à la falsification côté Android, voir le durcissement de sécurité des plugins TAK.

Pièges de compatibilité des versions WinTAK

  • Une build, une cible. Ne considérez un .wpk valable que pour la build WinTAK contre laquelle il a été compilé. Quand les utilisateurs passent de 5.8 à 5.9, recompilez contre les paquets du SDK 5.9 et retestez.
  • Plusieurs versions par an. Le TAK Product Center travaille en cycle de développement de 120 jours avec des gels de fonctionnalités publiés : chaque version demande une recompilation planifiée et une passe de régression.
  • Décalage de variante. Les builds CIV et MIL diffèrent. Un plugin peut déclarer les variantes qu’il cible (TakVariant) et la version du SDK avec laquelle il est construit (TakSdkVersion) ; testez sur la variante qu’utilisent vos utilisateurs.
  • Dérive des dépendances. Ciblez exactement la version .NET Framework de l’hôte et ne livrez pas votre propre copie d’un assembly que WinTAK charge déjà, comme Prism, dans une autre version. Les conflits de liaison se voient en plugins qui échouent silencieusement au chargement : lisez d’abord les fichiers Errors, Log et Fatal dans %AppData%\WinTAK\Logs.
  • TAKX. Ne supposez pas qu’un plugin WinTAK fonctionnera tel quel dans TAKX ; tant que le TAK Product Center ne publie pas de chemin de migration pour votre variante, budgétez un portage.

Construire ou acheter : obtenir un plugin WinTAK vite

S’il faut la capacité en semaines plutôt qu’en trimestres, parcourez cette liste :

  1. Vérifiez l’existant. Passez en revue les composants optionnels de l’installateur et le catalogue de plugins WinTAK sur tak.gov ; un plugin gouvernemental couvre peut-être déjà le cœur du besoin.
  2. Demandez au fabricant. Les fabricants de capteurs et de systèmes C2 livrent souvent des intégrations TAK pour leurs propres produits.
  3. Questionnez le plugin. Si vos données peuvent atteindre TAK Server ou le réseau local en CoT, WinTAK les affiche sans plugin. Construisez-en un pour une nouvelle interface, du traitement local, un nouveau format de fichier, du contrôle d’appareils ou un pont bidirectionnel.
  4. Budgétez le cycle de vie. Planifiez une recompilation et une passe de régression par version WinTAK, un chemin de signature et de distribution conforme à votre accréditation, et le support de chaque variante déployée. Une équipe qui a déjà résolu la composition MEF, les cas limites CoT, le packaging et l’épinglage de versions lève tôt l’essentiel du risque de planning.

Besoin d’un plugin WinTAK pour vos capteurs ou votre système C2 ?

Nous construisons des plugins WinTAK et ATAK qui amènent les données capteurs, drones et C2 dans TAK — avec des builds épinglées en version, la validation CoT et un chemin de déploiement conforme à votre accréditation.

Construire un plugin WinTAK avec nous → WinTAK dans le TOC →

Préparé par l’équipe d’ingénierie de Corvus Intelligence, qui construit des plugins TAK et des intégrations CoT pour des utilisateurs de la défense ; les détails du SDK WinTAK ont été vérifiés contre la référence du SDK publiée, le manuel utilisateur WinTAK et les documents de processus tak.gov. À propos de Corvus Intelligence →