2009-12-22 5 views
4

Il pourrait être une question stupide, mais tous mes essais pour google cet échec. La question est: Comment pouvez-vous développer des applications Windows qui n'ont pas besoin d'un redistribuable pré-installé? Je veux créer des applications qui s'exécutent également sous des versions plus anciennes de Windows qui n'ont pas le .NET Framework ou quelque chose de similaire inclus.Programmation pour Windows sans redistribuable

Merci, eWolf

+0

N'utilise pas .NET une option? –

+0

@Lasse: Non, car il a besoin d'une redistribuable. @All: Merci pour les réponses! Je vais commencer à apprendre le C++ maintenant .. J'ai devant moi un gros gros livre qui est aussi censé être pour les débutants complets, mais dans le premier chapitre, il utilise déjà des tonnes d'expressions que je comprends seulement parce que je peux déjà développer avec C# et PHP ..: D – eWolf

Répondre

7

programme d'abord, dans une langue maternelle, tels que C++, pas CLR. Deuxièmement, désactivez le manifeste et évitez de lier des DLL externes (telles que STDC ou MFC).

+0

+1, même si mon ventre fait mal maintenant. –

+0

Donc, C++ n'a pas besoin d'une redistribuable? Récemment, certains logiciels installés "Microsoft Visual C++ Redistributable" sur mon ordinateur. Quand avez-vous besoin de ce composant? – eWolf

+0

Vous en avez besoin lors de la programmation en C++ CLI, AKA "géré C++", qui est un langage de type C++ de Microsoft qui est en fait un hybride entre C++ et C#. –

4

Qu'entendez-vous par anciennes versions de Windows?
Le .net Framework fait partie de Windows depuis Windows 2003 et .net 1.1.
Ainsi, si vous ciblez des versions de Windows plus récentes que Windows 2003, vous pouvez être sûr que .net est disponible.

Il existe également des solutions, qui automate linking/packaging des produits .net, de sorte que vous n'avez pas besoin d'expédier des redistribuables etc.

Mise à jour:
Je viens de découvrir que Mono vous permet de relier la exécution complète dans votre exécutable.
Ils appellent cette fonctionnalité Bundle.
En savoir plus à ce sujet here.

+0

Peut-être qu'il veut dire vieux comme dans Win9x ou Windows 2000 où la présence de .NET n'est pas garantie du tout. – Rob

+0

Probablement, mais il a tagué la question avec .net et redistribuable. Nous parlons donc des plates-formes qui ont une sorte de support .net disponible. –

+0

Si je développe pour. NET, alors pour la version la plus récente. Cela ne m'aide pas beaucoup si .NET 1.1 est disponible ... – eWolf

1

Je vous recommande d'utiliser le WTL, qui est un framework léger en C++. C'est vraiment une étape au-dessus de l'API Win32, donc vous obtenez des petits EXE avec peu de dépendances. WTL nécessite l'infrastructure ATL que vous pouvez lier statiquement, ce qui signifie que vous avez seulement besoin d'expédier votre fichier EXE.

Un autre cadre intéressant est Qt. Cependant, cela nécessite que vous envoyiez des DLL avec votre application. Qt est un cadre fantastique et je pense que vous trouverez plus productif que WTL (en fonction de vos besoins d'application bien sûr.)

+0

Cela semble intéressant. Quel environnement recommanderiez-vous pour C++? Dois-je utiliser Visual C++ ou gcc? Y a-t-il une sorte de concepteur de formulaires disponible? – eWolf

+0

J'ai également trouvé intéressante la boîte à outils SmartWin ++, même si son développement s'est arrêté il y a quelques années. –

+1

Si vous optez pour WTL, utilisez Visual Studio. Si vous optez pour Qt alors ils ont un superbe IDE C++ (complet avec l'éditeur de formulaire) appelé Qt Creator. – Rob

2

Edit: Comme eWolf a souligné qu'il n'a pas besoin du .NET, malgré l'original question marquée comme .NET.

En résumé, certaines machines plus anciennes telles que Win95/98/2000 n'ont peut-être pas installé le moteur d'exécution. Puisque vous avez spécifié .NET, je suppose que vous voulez construire une application en utilisant .NET, il y a un gros mais, vous devez avoir le runtime .NET installé auparavant, vous pouvez exécuter l'application .NET. Vous pouvez facilement contourner cette difficulté par deux méthodes:

  • Installez le runtime .NET manuellement ou
  • Utilisez un script d'installation personnalisé qui peut détecter si l'exécution .NET est installé ou non, pour installer le runtime .NET redistribuable .

Si vous parlez d'une application native tel que C/C++, le meilleur chemin à prendre (pour éviter des dépendances et de minimiser le nombre de DLL requis) est, développer dans WinAPI32 brut, en utilisant seulement les DLL standard que beaucoup de machines Windows auront, COMMCTRL.DLL, USER32.DLL, ADVAPI.DLL pour n'en nommer que quelques-uns. Le résultat final sera un exécutable plus petit.Bien sûr, vous pouvez regrouper d'autres DLL en liant statiquement les DLL ensemble pour former un grand fichier mammouth exécutable.

+0

Non Je ne veux pas construire une application en utilisant .NET car cela nécessite un runtime - ce dont je ne veux pas. Je suis intéressé par les applications natives. – eWolf

+0

@eWolf: Ok. Pouvez-vous modifier vos tags en conséquence que vous avez marqué comme. NET, je vais modifier ma réponse en conséquence aussi. – t0mm13b

+0

Oh, je suis désolé, je ne voulais pas ajouter le tag .NET .. l'a corrigé. – eWolf

3

Utilisation de Delphi - Bien que les versions les plus récentes de l'EDI comportent des bogues bizarres, il est facile de créer des applications Windows natives qui n'ont pas besoin d'être redistribuables. Beaucoup plus facile à utiliser que C++/win32.

+0

Vous avez probablement raison, mais C++ est un langage qui semble généralement valoir la peine d'être appris. C'est sûr que ce n'est pas facile, mais je pense que c'est assez rapide. – eWolf

+0

Si c'est juste un exercice d'apprentissage, alors bien sûr, vous pouvez faire ce que vous aimez. Je doute qu'il y ait une différence de vitesse significative entre une application C++ et une application Delphi, mais depuis Delphi vous permet de vous rapprocher du bare metal, tout comme C++. La différence est dans le temps de développement - une interface graphique est beaucoup plus rapide et plus facile à développer dans Delphi qu'un C++. – Graham

+0

Si vous êtes intéressé par C++, vous pouvez utiliser C++ Builder, qui fait partie du même IDE (si vous achetez le produit RAD Studio). Il peut également produire des applications sans exigences redistribuables.(J'ai déjà gagné un pari avec un administrateur réseau pour écrire une application Windows qui fonctionnerait à partir d'une disquette de 1,44 Mo sans installation et récupérer des informations via le WinAPI de sa machine serveur de base de données, en utilisant Delphi 2 et collecter sur le pari.) –

Questions connexes