Hallo Leute! Da ich für einen Bekannten von mir eine Software in Visual Studio (C++) geschrieben habe, möchte ich ihm diese übergeben. Da er die Software gegebenenfalls an andere Benutzer (PCs) verteilen möchte, tut sich bei mir folgende Frage auf: Das Programm besitzt eine graphische Benutzeroberfläche (WinForms) und es kann erfolgreich kompiliert und auf meinem Rechner (!) ausgeführt werden. - Wie muss ich das Projekt erstellen, damit ich sicher gehen kann, dass das Programm ohne "benötigte DLLs" oder Ähnlichem auf jedem Windows-Rechner (XP bis Win7) läuft? Ich denke nicht, dass es damit getan ist, einfach die EXE-Datei weiterzugeben ;-) Vielen Dank, habe bisher leider nie für andere Maschinen programmiert. Gruß Winni
Hi, da du WinForms verwendest, hast Du ein .NET-Programm geschrieben und kein C++-Programm im ursprünglichen Sinne. Der Zielrechner benötigt dann das dazu passende .NET-Framework (Versionen sind abwärtskompatibel) und eventuelle Dlls, falls Dein Programm aus mehreren Modulen besteht. Gruß, Oliver
.Net sieht kein monolithisches Linken vor, d.h., mit einer Exe-Datei alleine ist es nicht getan, es ist mindestens die passende .Net-Laufzeitumgebung erforderlich.
Welcher Mechanismus von Microsoft "garantiert" mir denn, dass die Software auf Windows-Maschinen größer XP reibungslos funktionieren? Die Entwicklung der Software schön und gut, aber wenn's ums Ausliefern geht, hält M$ die Waffen still... Auf deutsch: Den Projektordner incl. des .NET-Frameworks ausliefern. Das nächste mal glaube ich verwende ich Java. Da soll's ja ohne Weiteres klappen.-Soviel zur Theorie. Gruß
Winfried schrieb: > Welcher Mechanismus von Microsoft "garantiert" mir denn, dass die > Software auf Windows-Maschinen größer XP reibungslos funktionieren? Das Entwicklungssystem sollte einen Mechanismus zum Zusammenpacken aller benötigten Dinge bieten, mehr werden Dir die diversen im Forum anwesenden .Net-Fanboys verraten können (ich nutze das Zeug nicht). > Das nächste mal glaube ich verwende ich Java. Da soll's ja ohne Weiteres > klappen. Das tut es natürlich auch nicht, ohne JRE macht so eine JAR-Datei gar nichts.
Schau mal hier im Kapittel 30: http://openbook.galileocomputing.de/visual_csharp_2010/visual_csharp_2010_30_001.htm#mj4a1e9ae4cf054c72c0ca00cc065c292b Ist zwar C# und nicht C++, aber auch MS Studio mit den selben Problemen. Sollte also vom Lösungsweg gleich oder wenigstens ähnlich sein. Das mit Java geht auch nur, wenn Java auf dem Zielrechner läuft (wobei das meist der Fall sein dürfte). avr
Winfried schrieb: > Welcher Mechanismus von Microsoft "garantiert" mir denn, dass die > Software auf Windows-Maschinen größer XP reibungslos funktionieren? Garkeiner. Den Installer (inklusive aller Abhängigkeiten, Redistributables etc. pp.) musst Du schon selber erstellen. Nicht jedes API ist auf allen OS-Versionen verfügbar, ist auch irgendwie logisch? Und womöglich musst Du im Code sogar Spezialfälle behandeln. Das war noch nie anders. Es ist auch einer der Gründe warum nicht die Sekretärinnen Software entwickeln sondern einigermassen gut bezahlte, umm, Spezialisten. > Die Entwicklung der Software schön und gut, aber wenn's ums Ausliefern > geht, hält M$ die Waffen still... Nein, nicht wirklich. Deren Antwort heisst irgendwie so: Installshield oder ähnlich verwenden, jede Menge Dokus lesen, ohne Ende testen. > Auf deutsch: Den Projektordner incl. des .NET-Frameworks ausliefern. Nein. Das funktioniert garantiert nicht überall. Und wenn der "Kunde" nicht für den Code bezahlt hat kriegt er den auch nicht, aus Prinzip. Ich habe schon Bekloppte gesehen die dann verlangt haben dass auf dem Zielsystem die korrekte Visual Studio-Version installiert sein muss. Autsch... > Das nächste mal glaube ich verwende ich Java. Da soll's ja ohne Weiteres > klappen.-Soviel zur Theorie. Bwahahaha! Träum weiter. Oder informier Dich mal über die Realität. Java - ohne Weiteres klappen! Mit der Sprache die um die tausend subtil inkompatible Implementierungen für alles und jedes hat, genau, das muss ja klappen...
Verwende das nächste Mal RealStudio. Das packt wenigstens ALLES (DLLs und EXE) in einen Ordner und das Programm läuft ohne jede Installation, Kopieren genügt. Auch vom Stick oder der CD. Und ganz nebenbei kannst du aus dem gleichen Quelltext Mac- und Linux-Versionen erstellen - wenn du keine speziellen Systemaufrufe machst, ohne jede Änderung.
Winfried schrieb: > Ich denke nicht, dass es damit getan ist, einfach die EXE-Datei > > weiterzugeben ;-) Normalerweise reicht das. Wenn du keine speziellen Dlls benutzt, ist alles im .Net-Framework drin. Das aktuelle .Net-Framework ist seit XP SP2 in den Windows-Updates. Insofern sollte es keine Probleme geben. Es sei denn der Benutzer hält seinen PC nicht auf dem neuesten Stand. Aber das ist nun wirklich nicht dein Problem. Mit welchem Visual Studio programmierst du? Ich nehme mal an, daß du die kostenlose Express-Version verwendest. Da kann das: bluppdidupp schrieb: > Einfach auf Build -> Publish, dann erzeugt er nen Installer u.U. nicht zutreffen, da die Express-Versionen nicht für die kommerzielle Anwendung sind und genau diese Funktionen nicht drin sind. mfg.
Thomas Eckmann schrieb: > bluppdidupp schrieb: >> Einfach auf Build -> Publish, dann erzeugt er nen Installer > > u.U. nicht zutreffen, da die Express-Versionen nicht für die > kommerzielle Anwendung sind und genau diese Funktionen nicht drin sind. Die Express-Versionen sind für kommerzielle Anwendungen 1) allerdings gibt's ClickOnce nicht direkt für C++-Anwendungen 2)... > mfg. 1) http://www.microsoft.com/express/support/support-faq.aspx 2) http://msdn.microsoft.com/en-us/library/ms235287.aspx
Arc Net schrieb: > Die Express-Versionen sind für kommerzielle Anwendungen Man darf sie dafür verwenden, gemacht sind sie nicht dafür. Keine DLLs, kein Setup, kein Source-Safe... mfg.
Thomas Eckmann schrieb: > Arc Net schrieb: >> Die Express-Versionen sind für kommerzielle Anwendungen > > Man darf sie dafür verwenden, gemacht sind sie nicht dafür. > > Keine DLLs, kein Setup, kein Source-Safe... DLLs kann man afaik mit allen Express-Versionen erzeugen (VC++ auch native), Setup: C#, VB -> ClickOnce, ansonsten wix.codeplex.com, Orca aus dem Windows SDK 1), InnoSetup oder was anderes, SourceSafe ist tot also entweder TFS oder Subversion, Mercurial, Darcs. Was fehlt (wenn man es denn braucht) sind u.a. div. Datenbank-, Profiling-, Refactoring- und Modeling-Werkzeuge und ext. Add-Ins. > > mfg. 1) http://msdn.microsoft.com/en-us/library/aa370557(v=vs.85).aspx
Arc Net schrieb: > DLLs kann man afaik mit allen Express-Versionen erzeugen (VC++ auch > > native), Da habe ich mich auch vertan. Ich meinte Services. mfg.
Wenn ich in VS Express auf "Erstellen" im Menü klicke, dann werden alle Dateien die man braucht in den Projektunterordner \bin\Release kopiert. Die kann man kopieren, starten und alles läuft. Vorraussetzung ist, dass externe DLLs als Verweise im Projekt eingefügt sind.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.