J'ai eu pour tâche d'étendre l'application WinForm existante pour effectuer un temps de vérification ou non le Framework .NET (FX. 3.5) requis (FX. 3.5) est installé.
Eh bien, les problèmes sont que - S'il n'y a pas de framework installé. , le programme WinForm n'est pas capable de courir du tout ... Je suppose. P>
Je pouvais (peut-être) faire comme suggéré ici: (et faire un programme C ++ qui devrait commencer en premier, faire le chèque, puis lancer l'application) Vérifiez sur .NET Framework Version de WinForms App Mais je préférerais ne pas entrer dans C ++. P>
Une autre façon semble être cette solution:
Pourquoi n'est-ce pas Une exception projetée lorsque la version droite .NET Framework n'est pas présente?
... où vous configurez votre application dans App.config. Mais je doute que cela fonctionne s'il n'y a pas de framework installé. P> donc ma question est donc
6 Réponses :
Si vous déployez souvent des utilisateurs limités, vous devez consulter ClickOnce ( http://msdn.microsoft.com/en-us/library/t71a733d (v = vs.80) .aspx ) p>
C'est un peu comme Windows Installer, mais aussi simplifié. De l'application Perspective de l'utilisateur ressemblera à une icône de bureau. Lorsque vous cliquez sur l'icône, il vérifie automatiquement toutes les exigences et installera la dernière version de votre logiciel s'il a été mis à jour. De cette façon, vous pouvez vous assurer que les utilisateurs disposent toujours du framework requis installé, de même que les utilisateurs utiliseront toujours la dernière version. P>
Il convient de mentionner que cela nécessitera une connexion Internet disponible pour les utilisateurs.
@Avi Turner: Vous n'avez pas besoin nécessaire de une connexion Internet B>, une connexion à Réseau local B> serait suffisante si l'application est signifiée à partir de réseau local.
@Avitaurner Votre commentaire est inexact. ClickOnce propose divers moyens de distribution (même via un support optique).
Si le framework requis n'est pas installé, votre application ne fonctionnera pas, alors vérifiez si le framework est installé à partir de votre application vérifie quelque chose que vous savez déjà être vrai.
Si vous souhaitez vérifier que le cadre est installé, vous devez vraiment le faire à partir de l'exe AA BootsTrapper, soit écrit dans une version .NET que vous savez existera (comme .NET 2 car il est installé sur la machine avec le système d'exploitation) ou une autre langue comme C ++. p>
Vous pouvez vérifier dans le registre (Software HKLM \ Software \ Microsoft \ Net Framework Setup \ NDP) pour voir les cadres installés. Cela peut facilement être fait en C # ou à toute autre langue. P>
C # Code comme ceci: P>
var baseKeyName = @"SOFTWARE\Microsoft\NET Framework Setup\NDP"; var installedFrameworkVersions = Registry.LocalMachine.OpenSubKey(baseKeyName); var versionNames = installedFrameworkVersions.GetSubKeyNames();
Pour vérifier la version .NET Framework Suivez http://support.microsoft.com/kb/318785 a> p>
J'ai eu pour tâche d'étendre la demande WinForm existante pour effectuer un temps de vérification ou non le framework .NET requis (FX. 3.5) est installé p>
Cela n'a pas de sens, car il ne s'exécutera pas si requis forge> composant est manquant. p>
Comme déjà mentionné, le programme d'installation est responsable du travail pour vérifier les composants , interrompre l'installation, les télécharger et les installer. p>
mais dans tout cas, rien ne vous empêche de faire bootstrapper em>, qui pourra courir dans la majorité des temps (AKA requise moins / aucune composants) et qui exécuteront votre application .NET em>. Il peut être organisé de plusieurs manières: EXE + EXE (souvent renommé), EXE + DLL, EXE + ressource intégrée (extrait et exécution), etc ... p>
Si vous pensez utiliser Mme Visual C ++ pour Faites de bototstrapper, alors voici un mauvais nouveau pour vous: il a nécessité une composante forte> à installer (oui, c'est stupide, mais il a besoin de Microsoft Visual C ++ 200x Redistributable). Il serait donc à nouveau d'un travail d'installateur, ou vous devrez apprendre à écrire des logiciels C / C ++ Pure Winapi, qui est une douleur, mais faisait une douleur. P>
par exemple, c'est un chèque pour. NET Framework 4.0 P>
// check if net framework 4.0 or higher is installed HKEY hkey; if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Net Framework Setup\\NDP\\v4", 0, KEY_READ, &hkey) != ERROR_SUCCESS) ; // some error RegCloseKey(hkey);
Vous avez raison sur le programme qui ne fonctionne pas si la version requise .NET n'est pas installée. Vous pouvez utiliser une bootstrapper, car d'autres l'ont dit. Vous pouvez simplement laisser l'application échouer au moment de l'exécution avec la zone de message par défaut qui apparaît sur la fidélité de la dépendance manquante. P>
Une autre approche valide organiserait vous-même le CLR. Ici: p>
Vous pouvez créer un fichier lot (.bat) pour vérifier l'existence des dossiers .NET Framework: P>
Si Existe C: \ Windows \ Microsoft.net \ Framework [Version-cadre ici] (Goto LaunchProgram) Autres Goto ErrormSage P>
Normalement, vous auriez un programme d'installation qui vérifie la version .NET Framework et l'installe si elle n'est pas encore installée. Pour juste un exe, je n'ai aucune idée.
Qu'est-ce que la vérification de la framework .NET vous gagne réellement? Qu'essayez-vous de finalement faire?
Windows est livré avec une version de .NET préinstallée depuis Windows XP (je pense) et il n'est pas facile de la désinstaller. Juste pour que tu saches.
Je pense que les commentaires sont juste sur: Si vous souhaitez le dénominateur le plus bas, cible .NET 2.0 et assumer aucun client utilise Windows 2000 ou plus tôt. Sinon, construisez un package d'installation avec quelque chose comme NSIS et installer le bon fonctionnement .NET si nécessaire, expédition idéalement. avec le paquet de redistribuabilité pertinent.
@Justin Skiles: L'objectif du programme est d'être un installateur pour "une suite" de programmes / paramètres qu'il peut choisir. Il n'est pas fabriqué en tant que package d'installation, mais est une formulaire gagnant qui guide l'utilisateur (généralement la personne informatique) à travers plusieurs sélections. (Pour le moment, je ne peux pas donner plus de détails, car je ne suis qu'un mois dans le travail). Donc, cette vérification du framework .NET est plus une commodité pour la personne qui installe le programme - et de donner des commentaires rapides que quelque chose manque.
Comment l'application accède-t-elle sur le PC de l'utilisateur? Si sa via une MSI, vous pourriez avoir l'auteur de la tramework .NET Per-Requsiste, vérifiez dans l'installateur.
@Mostruash: Merci, je ne le savais pas. Cela signifie qu'il devrait toujours y avoir une version .NET installée sur nos objectifs, car ils sont tous Windows 7 ou Windows Server (je pense!).
@Jan: Pas vraiment ... Seulement hautement probable.
@Leandro Taset: Il suffit de modifier ma déclaration à ce que les objectifs sont Windows 7 ou Windows Server (2008).
@Jan: correct. Mon commentaire précédent s'applique toujours. Le fait que le document .NET est pré-installé ne signifie pas que cela ne peut pas être supprimé par un utilisateur à tout moment via le panneau de commande. Donc, comme je l'ai dit: très probable, mais pas "toujours".