Hallo zusammen
Ich hab' einen eher uncoolen Effekt mit Path.GetTempPath().
Ausgangslage:
Ich hab' ein MSI, das über WiX erzeugt wurde und woraus Custom Actions (geschrieben in C#) aufgerufen werden. Innerhalb dieser Actions erstelle ich Dateien im Temp-Ordner, lese sie in einer anderen Action wieder aus, kopier' die Datei und lösch' sie zum Schluss. So weit so gut.
Nun hab' ich das MSI auf einer 64bit-Maschine getestet. Der Aufruf Path.GetTempPath() gibt bei der einen Custom Action den Wert 'C:\Documents and Settings\Admin\Local Settings\Temp\2' zurück und bei einer anderen Custom Action den Wert 'C:\Documents and Settings\Admin\Local Settings\Temp'.
Wie kann das sein?? Die aufgerufenen Custom Actions befinden sich alle in derselben Assembly.
Betriebssystem ist Win Server 2003 Enterprise 64bit.
Vielen Dank für die Hilfe!
Gruss,
daprodigy
lieber arm dran als arm ab.
Aus der Doku:
Returns the path of the current user's temporary folder
Benutzt eine deiner Custom Actions impersonation?
Naja, ich bin halt mit dem Admin-User eingeloggt und starte das MSI.
Das Konfuse ist eigentlich, dass ich zwei verschiedene Verzechnisse zurück bekomme ...
lieber arm dran als arm ab.
Hmm... hab ich wohl nicht richtig gelesen, ist ja immer der Admin-Pfad mit drin.
Kann ich leider (oder doch zum Glück;) nicht nachvollziehen.
Testcode:
static string _temp = "";
static void Main(string[] args)
{
for (int i = 0; i < 10000000; i++)
{
string tmp = Path.GetTempPath();
if (_temp != tmp)
{
Console.WriteLine(tmp);
_temp = tmp;
}
}
Console.ReadKey();
}
Schau noch mal genau durch deinen Code. Ich kann mir eigentlich nur noch vorstellen das du den Pfad irgendwo im Code umbaust.
[EDIT]
Oder irgendetwas im MSI Pfuscht an den Umgebungsvariablen rum.