Laden...

App.config und *.exe in unterschiedlichen Ordnern

Erstellt von oehrle vor 12 Jahren Letzter Beitrag vor 12 Jahren 2.082 Views
O
oehrle Themenstarter:in
461 Beiträge seit 2009
vor 12 Jahren
App.config und *.exe in unterschiedlichen Ordnern

Hallo, unter den WinFOrms war es möglich, die application.exe.config in einem anderen Verzeichnis zu deponieren, als die ausführbare *.exe - Datei.

Wie macht man das in WPF, oder besser gesagt geht das noch? Hat jemand einen Link dazu? Im FOrum habe ich dazu noch nichts gefunden. Bei WPF habe ich schon mal das Problem, wo ich den Änderungscode rein schreiben soll (bei WinForms war das bei "Program.cs").

O
oehrle Themenstarter:in
461 Beiträge seit 2009
vor 12 Jahren
Weitere Erklärung

Hallo, bis jetzt hat noch keiner etwas dazu gewußt. Ich erkläre noch etwas zu dem Problem.
Die Applikation läuft auf verschiedenen Maschinen. Viele Maschinen haben eine unterschiedliche Ornerstrukturen auf ihren Platten, wo Daten abelegt werden (was natürlich "SCh****" ist ich weiss) aber ich kann das System nicht rumkrempeln. Deswegen hatte ich das für diese WinForm-Applikation so gemacht. Alle Maschinen sind auf die ausführbare EXE-Datei gelinkt (Desktop--Link). Damit aber bei jeder Maschine individuell die Verzeichnisse in der application.config eingestellt weren können, mußte diese in ein anderes Verzeichnis als die ausführbare EXE-Datei (diese liegt ja auf dem Netzlaufwerk). Somit habe ich es so gemacht, dass sie ".exe.config" auf der Maschine in einem fest definierten Ordner leigt, der bei allen Maschinen gleich sein muss. So habe ich nicht das Problem, das beim generieren einer neuen EXE-Datei an allen Maschinen die Pfade in der ".exe.config" angepasst werden müssen. Das zu meinem PRoblem. Da ich mittlerweile mit WPF arbeite , habe ich nun keine Ahnung wie ich das bei WPF verbiegen kann. hat jemand eine andere Idee?

U
1.688 Beiträge seit 2007
vor 12 Jahren

bis jetzt hat noch keiner etwas dazu gewußt

Nun ja - so lang ist's ja noch nicht her - s. dazu [Hinweis] Wie poste ich richtig? 7.
Willst Du etwas ergänzen, so ist es sinnvoller, solange es keine Antwort gegeben hat, den Ausgangspost zu editieren.

Zum Thema: Wie hast Du das bei Windows Forms gemacht und was funktioniert bei WPF nicht mehr? Die Handhabung der app.config ist an sich unabhängig von der GUI-Technologie.

O
oehrle Themenstarter:in
461 Beiträge seit 2009
vor 12 Jahren
Beispiel bei WinForm

Hallo ujr, hier mal ein Beispiel. Der Code wird in der program.cs eingesetzt.


string programmPfad = null;

//// Name der gestarteten Applikatioin auslesen, Suffix mit "." abschneiden
string name = Path.GetFileName(Application.ExecutablePath);
name = name.Remove(name.Length - 4);

//// Pfad festlegen, wo die .exe.config liegt
programmPfad = @"c:\Programme\MeineApplikation + "\\";
//// Name für .exe.config festlegen
string nameConfigFile = name  + ".exe.config";

//// Pfad für die app.config auf anderen Ort und anderen Namen (Namespace.exe.config) umbiegen
AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", programmPfad + nameConfigFile);

Nun eben das Problem wie ich das bei WPF mache. Ich brauche dort den Startpfad, sowie die AppDomain, die man so nicht beschreiben kann wie bei WinForm. Da bauch ich Hilfe.

U
1.688 Beiträge seit 2007
vor 12 Jahren

Hallo,

s. z. B. [FAQ] Pfad zur eigenen Anwendung (EXE) ermitteln
Probier mal Deinen Code in App.xaml.cs zu schreiben.

O
oehrle Themenstarter:in
461 Beiträge seit 2009
vor 12 Jahren
AppDomain.SetData geht nicht ...

Halli ujr. den Pfad kann ich abrufen, aber kann den hier nicht setzen:

AppDomain.SetData("APP_CONFIG_FILE", programmPfad + nameConfigFile);

Trage das mal in die app.xaml.cs ein. DAnn siehst, das .SetData nicht existiert.

U
1.688 Beiträge seit 2007
vor 12 Jahren

Hallo,

natürlich darfst Du das nicht direkt in die Klasse schreiben!

Mit


<Application
             ...
             Startup="Application_Startup"
             StartupUri="MainWindow.xaml">
  ...
</Application>

bekommst Du aber einen "Einsprungpunkt":


public partial class App : Application
    {
        private void Application_Startup(object sender, StartupEventArgs e)
        {
            AppDomain.CurrentDomain.SetData...
        }
    }

O
oehrle Themenstarter:in
461 Beiträge seit 2009
vor 12 Jahren
[erledigt]App.config

ujr, danke für die Hilfe, hat geklappt.