Autor Beitrag
awagner
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Fr 26.02.16 09:40 
Guten Tag,

ich habe eine kleine Anwendung in C# geschrieben und diese nach dem MVC-Model aufgebaut. Dazu liegen in meinem Projekt Ordner 3 Unterordner (Model,View,Controller), welche jeweils die benötigten Quellcode Dateien besitzen. Nun habe ich noch einen 4 Ordner angelegt. In dem ein benötigtes Bild hinterlegt ist, dieses öffne ich aus der View mittels der Pfadangabe "..\\..\\Pictures\\test.png". Im Debug Modus läuft alles Korrekt ab. Erstelle ich nun aber mit einem Setup-Projekt eine Installationsdatei und installiere darüber meine Anwendung, wird kein Ordner Pictures mit installiert und die Anwendung findet unter dem Pfad auch keine Bilddatei mehr.

Weiß vielleicht jemand was ich dort genau falsch mache?

mit freundlichen Grüßen

Andreas


Zuletzt bearbeitet von awagner am Fr 26.02.16 15:28, insgesamt 1-mal bearbeitet
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Fr 26.02.16 12:47 
Hallo,

du mußt unterscheiden zwischen dem Projektordner und dem Release-Ordner. Sobald du ein Programm (mittels eines Setup-Programms) auf einen anderen Rechner (oder in ein anderes Verzeichnis) installierst, so kann das Programm nur noch auf den Installationsordner (d.h. dem Release-Ordner) zugreifen.
Du mußt also sicherstellen, daß alle Dateien in den Release-Ordner kopiert werden.
Beim VS kannst du für die einzelnen Dateien dann in den Eigenschaften die Eigenschaft "CopyToOutputDir" auf "Copy, if newer" stellen.

Vom Programm aus solltest du dann nur noch auf die im Release-Ordner (bzw. Debug-Ordner bei einem Debug-Build) befindlichen Dateien zugreifen, d.h. am besten per
ausblenden C#-Quelltext
1:
string filename = Path.Combine(Application.StartupPath, "Pictures/test.png");					


PS: Beim Setup-Programm mußt du dann natürlich auch sicherstellen, daß der "Pictures"-Ordner (aus dem Release-Verzeichnis) miteingebunden wird.
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4701
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Fr 26.02.16 14:12 
Es stellt sich die Frage womit du ein Setup erstellst. Visual Studio hat da ein paar Möglichkeiten (und je nach Visual Studio Version verschiedene).

Wenn du ein Setup baust der Form "nimm alles aus dem Ausgabeordner der Solution" dann setze einfach in den Eigenschaften deines Bild in Visual Studio die "Copy to Output Directory" Property auf "Copy if newer". Dann wir die auch in den Ausgabeordner kopiert falls nötig. Der Pfad ist dann aber vermutlich eh falsch. So relativ wie du das machst ist es vermutlich relativ zum Arbeitsordner. Der ist eher zufällig der gleiche Ordner wie die Executable deiner Anwendung muß er aber nicht. Du solltest denn Pfad aus "Pfad zur Anwendung" + "relativer Pfad von Anwendung zur Resource" zusammenbauen.

Edit: Man sollte nicht, wen man hier antworten will, zwischendurch Stundenlang von irgendwelcher ~echten~ Arbeit abgelenkt werden :roll:


Zuletzt bearbeitet von Ralf Jansen am Fr 26.02.16 20:12, insgesamt 1-mal bearbeitet
awagner Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Fr 26.02.16 15:27 
Hallo,

und vielen Danke für eure Tipps. Mein Fehler war wirklich das ich die unterschiedliche Lage der "exe" zwischen Debug und Release nicht berücksichtigt hatte.

mfg

Andreas