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.
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.
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.