none
Datei zur Laufzeit in den Application Ordner kopieren RRS feed

  • Allgemeine Diskussion

  • Hallo alle miteinander,

    Ich habe versucht eine XML-Datei die ich der Projektmappe hinzugefügt habe zur Laufzeit in den Ordner zur kopieren aus dem die Applikation ausgeführt wird. Dazu habe ich die Eigenschaften der Datei auf "kopieren, wenn neuer" und "Inhalt" gesetzt. Beim Debuggen greife ich per relativen Pfad "Settings.xml" auf die Datei zu. Wenn ich das Projekt nun über Erstellen>Veröffentlichen Kompilieren und über das sich dann öffnende Setup installiere funktioniert der Dateizugriff nicht mehr. Ich habe mich nun durch etliche Foren und Anleitungen geschlagen, aber verstehe immernoch nicht was da falsch läuft.

    Ich bin für jede Hilfe sehr dankbar,

    Partik.

    P.S.: Ich verwende Visual Studio 2013 Express für den Desktop

    Dienstag, 10. Dezember 2013 19:03

Alle Antworten

  • Hallo,
    da du das Programm installierst, wird die Datei später in den Programme-Ordner abgelegt. Dort hast du aber normalerweise keine Schreibrechte. Du solltest also einen anderen Ordner wählen. Beispiele:

    • AppData
      Für persistente Daten, die erhalten bleiben sollen.
      Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
      Obiger Code liefert dir den Pfad.
    • Temp
      für temporäre Daten, die wieder gelöscht werden dürfen.
      Path.GetTempPath() gibt dir den Ordnerpfad zurück.


    Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Twitter | Snippets   C# ↔ VB.NET Konverter
    Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.

    Dienstag, 10. Dezember 2013 19:10
    Moderator
  • Danke für deine Antwort Koopakiller.Ich habe mal in den Installationsordner geschaut, da existiert die Datei garnicht. er scheitert schon am Lesen. Woran kann das liegen?

    Dienstag, 10. Dezember 2013 21:20
  • Hallo,
    entschuldige Bitte meine verspätete Antwort.

    Wenn das Entpacken der Datei ohne Setup funktioniert, liegt es wohl nicht am eigentlichen Entpacker-Code.
    Ich tippe auf einen Fehler durch den relativen Pfad. Da das Arbeits- und Ausführungsverzeichnis nicht gleich sein müssen ist der Ausgangsordner für relative Pfade nicht zwingend der Ordner wo die EXE-Datei.

    Versuche also mal nach einen absoluten Pfad zu entpacken. Den Pfad der Anwendung kannst du wie hier gezeigt bekommen, auch wenn ich andere Orte bevorzugen würde.

    Wenn es nicht funktioniert: Wie ermittelst du denn den Pfad und entpackst die Datei?


    Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Twitter | Snippets   C# ↔ VB.NET Konverter
    Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.

    Freitag, 13. Dezember 2013 16:38
    Moderator
  • Wenn es nicht funktioniert: Wie ermittelst du denn den Pfad und entpackst die Datei?

    Wie schon beschrieben habe ich die Datei in meiner Projektmappe und dort die Eigenschaften auf "kopieren, wenn neuer" gesetzt. Ich ging davon aus dass die Datei dann in das Projekt integriert wird und beim starten in das Applikationsverzeichnis kopiert wird. Oder ist dem nicht so?

    Samstag, 4. Januar 2014 16:52
  • Hallo, nein dem ist nicht so. Kopieren wenn neuer bedeutet, das die Datei ins Ausgabeverzeichnis kopiert wird und du diese selbst mit ausliefern musst.

    Du kannst die Datei auch als Resource zum Projekt hinzufügen und dann beim ersten Start entpacken.

    Die Datei als Resource hinzufügen kannst du unter Projekt > Einstellungen > Resourcen. Zum entpacken findest du hier einen Weg. Wenn du VB.NET benutzt, in meiner Signatur steht ein Konverter. Bevor du die Datei entpackst solltest du prüfen ob diese da ist und nur dann entpacken wenn diese noch nicht existiert.

    Entpacken solltest du dann aber in den AppData-Ordner. Dort werden Anwendungsdaten gespeichert die erhalten bleien sollen.


    Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Twitter | Snippets   C# ↔ VB.NET Konverter
    Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.

    Samstag, 4. Januar 2014 17:05
    Moderator
  • *****************************************************************************************************

    Dieser Thread wurde mangels weiterer Beteiligung des Fragestellenden ohne bestätigte Lösung abgeschlossen.

    Neue Rückfragen oder Ergänzungen zu diesem Thread bleiben weiterhin möglich.

    *****************************************************************************************************

    Ciprian Bogdan, MICROSOFT   Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-PrinzipEntwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.





    Mittwoch, 22. Januar 2014 10:12
    Moderator