Forum: PC-Programmierung VS-Projekt auslieferbar?


von Winfried (Gast)


Lesenswert?

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

von Oliver R. (superberti)


Lesenswert?

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

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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

von Winfried (Gast)


Lesenswert?

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ß

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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.

von avr (Gast)


Lesenswert?

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

von bluppdidupp (Gast)


Lesenswert?

Einfach auf Build -> Publish, dann erzeugt er nen Installer

von Jasch (Gast)


Lesenswert?

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

von Frank (Gast)


Lesenswert?

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.

von Thomas E. (thomase)


Lesenswert?

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.

von Arc N. (arc)


Lesenswert?

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

von Thomas E. (thomase)


Lesenswert?

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.

von Arc N. (arc)


Lesenswert?

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

von Thomas E. (thomase)


Lesenswert?

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.

von _M_ (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.