Programm auf einem anderen PC ausführen
-
Hallo,
Vorweg möchte ich mich für dieses Forum bedanken, da ich schon öfters hier die Lösung eines meiner Probleme gefunden habe.
Nun stehe ich jedoch vor einem Problem, für welches ich noch keine praktikable Lösung gefunden habe.
Ich habe ein Programm (Messdatenauswertung; Windows Forms-Anwendung) mit dem Visual Studio 2005 in C++, basierend auf dem .net Framework, auf meinem PC unter Windows XP erstellt.
Führe ich das als Release kompiliere Programm nun auf einem anderen Windows XP oder Windows 98 PC, mit zuvor installierten .net (2.0) Framework, aus, funktioniert das Programm auch reibungslos. Soweit so gut.Nun bin ich jedoch auf Windows 7 und Visual Studio 2008 umgestiegen, und habe das Projekt (Messdatenauswertung) konvertiert (Benutzerkontensteuerung wurde automatisch hinzugefügt). Wenn ich das Programm jedoch nun kompiliere, lässt es sich nicht mehr auf einem anderen PC (Windows XP oder Windows 98 mit .net Framework) ausführen. Es erscheint sofort nach dem starten des Programmes die Fehlermeldung: "die Anwendung konnte nicht gestartet werden, weil die Anwendungskonfiguration nicht korrekt ist".
Als Zielframework habe ich in den Projekteigenschaften bereits .net 2.0 ausgewählt, jedoch ohne erfolgt.
Mittlerweile habe ich herausgefunden, dass sich das Programm auf einem anderen PC ausführen lässt, wenn man zusätzlich zum .net Framework das "Microsoft Visual C++ 2008 Redistributable Package" installiert.
Ich möchte euch nun fragen, wieso ein und dasselbe Projekt, kompiliert mit dem Visual Studio 2008, nun plötzlich eine zusätzliche Installation benötigt, um auf einem anderen PC ausgeführt werden zu können? Meines Erachtens ist dies ja ein Rückschritt.
Weiteres möchte ich euch Fragen, ob es nun eine Möglichkeit gibt, das Projekt auch mit dem Visual Studio 2008 so zu kompilieren, dass die Anwendung dann so Funktioniert, wie kompiliert mit dem Visual Studio 2005? Ob bleibt mir nur die Möglichkeit wider das ältere Visual Studio (2005) zu installieren?Eine Sonderbarkeit möchte ich noch anmerken. Die EXE, kompiliert mit dem Visual Studio 2008, ist dreimal so groß (~1MByte) wie kompiliert mit dem Visual Studio 2005 (340 kByte).
Vielen Dank im Voraus,
Roland.
-
Wenn du das VC++ Redistributable verständlicherweise nicht auf dem Zielrechner installieren müssen willst, musst du statisch gegen die CRT linken:
http://blog.kalmbach-software.de/de/2008/03/05/wie-man-statisch-gegen-die-c-runtime-crt-linkt/
-
Hallo,
Vielen Dank für Deine Antwort.
Leider kenne ich diese Seite bereits und hat mit leider auch nicht weiter geholfen.
Nach dem Link zum Video auf dieser Seite steht folgender Beisatz:
"PS: Dies geht nicht wenn die EXE/DLL .NET verwendet…"
Das erklärt auch, wieso ich damit keinen Erfolg hatte.
Trotzdem Danke für Deine Antwort.
Roland.
-
-
Hallo,
Vielen Dank für den Hinweis.
Ja, in der Tat lässt sich das Programm auf einem anderen System ausführen, wenn das VS C++ 2008 RT Package installiert wurde.
Was ich jedoch nicht verstehe, wieso funktioniert ein und dasselbe Programm ohne dieses Package, wenn es mit Visual Studio 2005 kompiliert wurde? Ein mit Visual Studio 2005 kompiliertes Programm lässt sich sogar auf einem Windows 98 SE PC ausführen, mit ausschließlich installiertem .net Framework.
Meines Erachtens ist das ja in gewisser Weise ein Rückschritt, wenn man auf das Visual Studio 2008 umsteigt, und somit auf dem Zielcomputer nun zusätzlich ein "Package" installieren muss.Es sollte doch eine Einstellmöglichkeit geben, mit der sich Programm, erstellt mit Visual Studio 2008 so verhalten, wie Programm erstellt mit Visual Studio 2005?
mfg
Roland
-
Soweit ich mich erinnern kann, wird die CRT 2005 mit .NET 2 mitinstalliert.. somit laufen dann die mit VS2005 erstellen Programme...
Ja, es ist ein Rückschritt...
Und nein, Du kannst es nicht einstellen...
-
Hallo,
Ah, wenn das Visual C++ 2005 Redistributable Package bereits mit dem .net 2.0 Framework mitinstalliert wurde, ist zumindest diese Frage geklärt, danke.
Nun, irgendwie schade, wird wohl nichts anderes übrig zu bleiben, als wider zu Visual Studio 2005 zu wechseln.
Wie sieht das eigentlich bei C# Programmen aus? Benötigen solche Programme ebenfalls ein eigenes Package, oder reicht hier das .net Framework aus?
Danke.
mfg
Roland
-
C# benötigt nur das .NET Framework.