Empaqueter une application .NET pour qu’il puisse fonctionner sur un ordinateur sans .NET

J’ai récemment essayé de déployer une application C # sur un ordinateur sur lequel .NET n’est pas installé.

Je sais qu’il y a eu beaucoup de questions sur le même sujet ici sur StackOverflow. En voici quelques unes dont je lis les réponses à toutes:

Empaquetage du framework .net avec un déploiement d’application .net

Exécuter une application .net sans installer le profil client .net?

Exécuter une application Windows C # sous Windows XP sans installer .NET Framework

Ainsi, toutes les réponses aux questions ci-dessus indiquent qu’il est impossible sans un logiciel spécifique, etc. L’un des logiciels mentionnés était le Linker Salamander .NET . Le seul problème avec cela est que je n’arrive pas à exécuter l’application après son traitement par Salamender. Je comprends que cela est en soi impossible, car la machine virtuelle .NET doit être exécutée. Cependant, par le passé, j’ai créé des applications Java et, avec elles, j’ai expédié l’intégralité de la machine virtuelle Java. Étonnamment, ils travaillaient toujours. Donc, la raison pour laquelle ce n’est pas un duplicata des questions ci-dessus est parce que ma vraie question est:

Quels éléments du framework .NET devrais-je empaqueter? Si je parviens à tout emballer, les placer dans le même répertoire que l’application que je suis en train d’exécuter permettrait à l’application de s’exécuter?

J’ai trouvé une solution à cela, le Microsoft .NET Redist Package . Le seul problème avec cela est qu’il a sa propre interface graphique. En dehors de cela, ce serait un ajustement parfait. Alors, quelqu’un pourrait-il me dire l’une des deux choses suivantes:

Existe-t-il un package .NET en ligne de commande, et si oui, où puis-je le télécharger?

S’il n’y en a pas, ou s’il serait peu pratique de le faire, approximativement, quels répertoires aurais-je besoin de copier à partir des installations .NET?

Je comprends que ces fichiers et répertoires sont spécifiques au système et que mon installation .NET peut ne pas fonctionner sur votre ordinateur, mais si C # ressemble à Java, cela devrait être réalisable. Est-ce La taille n’est pas une limitation, peu importe si l’application et tous ses fichiers ont une capacité de 1 Go ou seulement 1 Mo.

S’il n’y avait pas d’autre solution, j’ai utilisé Dependency Walker pour vérifier toutes les dépendances de mon programme. Si je devais en emballer la plupart, ma candidature fonctionnerait-elle en théorie?

Pour .NET, vous devez simplement installer le framework .NET approprié. L’installation du framework .NET inclut des options de ligne de commande pour permettre les installations silencieuses, telles que:

dotnetfx35.exe /q /norestart 

Pour plus de détails sur les options de ligne de commande, voir les options pour 3.5 et pour .NET 4.0 .

Cela étant dit, la plupart des packages d’installation traiteront ces détails pour vous dans le cadre de l’installation. L’utilisation d’un installateur correct résoudra cette dépendance automatiquement.

Selon les éléments du .NET Framework dont vous avez besoin, vous pouvez utiliser Mono . Il prend en charge la livraison du moteur d’exécution sans l’installation, comme vous le feriez avec une machine virtuelle, ou vous pouvez établir un lien statique avec les fichiers binarys pour créer un exécutable natif.

Si vous envisagez de déployer votre application (et que le processus d’installation n’a pas besoin d’être trop complexe), vous pouvez simplement créer un projet d’installation dans Visual Studio , puis amorcer les conditions préalables (framework .NET et autres que vous pensez va peut-être avoir besoin de).

Vous pouvez suivre les étapes décrites dans ces articles MSDN:

  • Comment créer un projet d’installation dans Visual Studio
  • Comment append des conditions préalables à un projet d’installation

Une procédure pas à pas est donnée dans cet article CodeProject .

Pour des scénarios de déploiement plus complexes (tels que l’installation de pilotes de périphérique avec votre application ou une meilleure prise en charge de la localisation), il est conseillé de se pencher sur le jeu d’outils WiX (Windows Installer XML) . C’est un ensemble d’outils qui crée des packages d’installation Windows, que vous configurez à l’aide de fichiers XML dans Visual Studio. WiX prend également en charge divers scénarios de démarrage .

Cette page couvre les différences entre les projets de configuration VS, WiX et InstallShield.