C#-Programme laufen nicht auf allen PCs

Palladin007

assimiliert
Moin

Wenn ich mit C# ein Programm schreibe und es bei mir teste, heißt das noch nicht, dass es auch auf anderen Computern funktioniert.

Ich gehe davon aus, dass jedes Programm die entsprechenden Verweise benötigt, die im Net-Framework mit gegeben sind, aber es ist ziemlich unpraktisch, wenn man sein Programm Freunden zeigen möchte und die das erst einmal installieren müssen.

Daher, wie kann ich es erreichen, dass sie trotzdem funktionieren?
Reicht es, wenn ich die einzelnen DLLs im selben Ordner liegen habe?


Und zweite Frage:

Wenn ich ein Programm erstelle, dann bekomme ich am Ende nur eine kleine exe.
Wenn ich dann aber Bilder mit einfüge, müssen die gespeichert werden und auch, wenn sie später hinzu gefügt werden sollen, muss ein Ordner zum Speichern da sein.
Da man das aber nicht vom Nutzer machen lassen will, habe ich versucht, ein Installations-Programm zu erstellen.
Da kam die Erinnerung, dass ich früher einmal im Microsoft Visual C# 2010 Express eine Funktion gefunden habe, die anstelle einer ausführbaren exe eine exe erstellt, die einem Installations-Programm gleicht.

Aber das finde ich nicht mehr. Weiß jemand, was ich meine und wo ich das finde, oder hat jemand eine andere Idee?
Ich würde es gerne Vermeiden, ein eigenes Setup-Programm zu schreiben, weil das für mich nicht unbedingt einfach ist.




Gruß
 
Hallo,

zu 1) Es wird auf anderen Rechnern funktionieren, sofern a) dort auch Windows installiert ist (Ausnahme ggf. Mono) und b) das gleiche Framework installiert ist. Wenn du standalone Programme schreiben willst, verzichte auf Frameworks und Libraries.
zu 2) Du kannst im VS ein Installationsprojekt anlegen - ist es das, was Du meinst?
 
zu 1.) Ich hab aber C# angefangen und ich möchte nicht umsteigen. Gibt es nicht eine Chance, z.B. jede dll, die benötigt wird, direkt einzeln zur Verfügung zu stellen, also z.B. im Programm-Ordner, wo sich die exe befindet. Ist ja auch bei anderen Spielen so, dass man eine benötigte dll entweder in den System32-Ordner, oder in den Programm-Ordner legen kann.

zu 2.) Ich kann aber nur C# und dort habe ich Programme geschrieben, die auch die Möglichkeit bieten, Bilder zu speichern, aber dafür brauche ich halt den Speicherplatz. Umzusteigen ist für mich dann schon doof. Ich hab mich auch mal im Internet informiert und fest gestellt, dass es tatsächlich so etwas gibt, nur habe ich die Funktion bei mir nicht gefunden -.-
 
Nein. Das passende .NET Framework (mindestens als sogenannte "Runtime") muss auf dem ausführendem PC installiert sein. Du kannst dir aber mit VS auch einen passenden Installer basteln, der dies ggfs. prüft und (herunterlädt) installiert. C# funktioniert dann nur auf Windows PCs mit einem passenden Framework (Linux mit Mono könnte auch klappen, je nachdem was du verwendest).

Bei Spielen verlangen die übrigens auch ein DirectX, das ist das gleiche "Schema".
 
Es ist also nicht möglich, jede benötigte dll mit einer Installation in den Programm-Ordner einzubauen, oder?

Oder muss ich dass dann gleich so machen, dass er die dlls nicht im Speicherort von Net sucht, sondern im Program-Ordner?
 
Zuletzt bearbeitet:
Nein.

Es ist "momentan" halt so das es nicht so ohne weiteres geht. Die erforderlichen speziellen Frameworks müssen richtig installiert sein. Leider.
Also sobald man ein spezielles Framework benutzt hat man halt leider diese Probleme.
Bei Java z.B. ist es genauso.
 
Jein. Wenn du in C++ die CLR nutzt, dann gilt das genauso. Wenn du "native C++" Programme baust, die keine Features des Frameworks nutzen, dann gilt das nicht. In dem Fall kannst/musst du die Windows Libraries direkt ansprechen bzw. du nutzt halt irgendwelche anderen Bibliotheken die du dann mit deiner Anwendung verteilst. Ansonsten: Nutzt du .NET, ist das Framework ein Requirement. So einen Installer zurechtzuklicken der das prüft/download/installiert dauert 2 Minuten, etwas komplizierter, wenn es auch offline funktionieren soll (dann musst die Runtime mit in den Installer packen).
 
Oben