Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Betriebssysteme (https://www.delphipraxis.net/27-betriebssysteme/)
-   -   Temporäre Dateien Unterordner "2" (https://www.delphipraxis.net/167096-temporaere-dateien-unterordner-2-a.html)

Flips 13. Mär 2012 14:06

Betriebssystem: Win XP

Temporäre Dateien Unterordner "2"
 
Hi,

im Rahmen eines Projektes baue ich mit Hilfe von WiX einen Installer.

Während des Setup werden Dateien in einen Unterordner XYZ des Temp-Ordners des aktuellen Benutzers kopiert/entpackt (C:\Benutzer und Einstellungen\...\Lokale Einstellungen\Temp\XYZ)
Das hat auf meiner lokalen Maschine (XP Prof SP3) auch super geklappt. Jetzt führe ich das Setup auf einer VM mit Windows Server 2003 aus und ich finde die Dateien beziehungsweise den Ordner XYZ nicht im Temp, sondern in Temp\2\.
Also insgesamt in C:\Benutzer und Einstellungen\...\Lokale Einstellungen\Temp\2\XYZ

Das will ich aber nicht, der Ordner soll im Temp-Ordner erstellt werden. Was hat es mit diesem Unterordner "2" auf sich? Denn da liegt nicht nur mein Zeug, sondern auch eine jusched.log, was ich dem Java-Updater zuordne.

Hat jemand von euch damit mal Erfahrungen gemacht?
Vielen Dank!

Morphie 13. Mär 2012 14:11

AW: Temporäre Dateien Unterordner "2"
 
Bist du über Remotedesktop mit dem Server verbunden, oder sitzt du "vor der Konsole"?
Die Unterordner mit den Zahlen sind soviel ich weiß die Sitzungen im Terminalserver. Du kannst dich ja bei einem Terminalserver mehrmals als ein und derselbe Benutzer anmelden. Die hätten dann ja immer das gleiche Temp-Folder. So wird das aber umgangen und jede Sitzung hat ihr eigenes Temp-Verzeichnis.

Flips 13. Mär 2012 14:16

AW: Temporäre Dateien Unterordner "2"
 
Jap bin per Remote verbunden.

Super, das wusste ich gar nicht.
Gibt es denn eine Möglichkeit, das in meinem Programm zu erkennen? Geht konkret um C#.

himitsu 13. Mär 2012 14:35

AW: Temporäre Dateien Unterordner "2"
 
%windir%\system32\tsconfig.msc

> Temporäre Ordner beim Beenden löschen (Beenden der Sitzung)
> Temporäre Ordner pro Sitzung verwenden (das sind die nummerierten Unterverzeichnisse)

%TEMP% und die ganzen APIs, welche auf den Temp-Ordner verweisen, zeigen auf das Unterverzeichnis der Sitzung, in welcher sie laufen.
(gib einfach mal
Delphi-Quellcode:
%TEMP%
als Pfad in den Explorer ein, oder in das Programme durchsuchen des Startmenü)

Zitat:

Du kannst dich ja bei einem Terminalserver mehrmals als ein und derselbe Benutzer anmelden
Nur wenn es erlaubt/aktiviert ist. (standardmäßig nicht)

Flips 13. Mär 2012 15:02

AW: Temporäre Dateien Unterordner "2"
 
Zitat:

%TEMP% und die ganzen APIs, welche auf den Temp-Ordner verweisen, zeigen auf das Unterverzeichnis der Sitzung, in welcher sie laufen.
Code:
Path.GetTempPath()
tuts leider nicht, der ignoriert den Unterordner.

Aber %TEMP% tuts, zumindest in der Pfadangabe des Explorer. Mal schauen, ob C# das ganze auch nimmt.

Flips 14. Mär 2012 09:43

AW: Temporäre Dateien Unterordner "2"
 
Ok C# tuts nicht...

Es ist echt zum heulen, zur Zeit scheint es mir so zu laufen:

Ich bin per RDP verbunden, führe da per Doppelklick die MSI aus (also über das Konto des angemeldeten Benutzers = Administrator).
Der Installer entpackt alles in den Unterordner des Temp-Ordners, der als Namen die Sitzungs-ID hat.
Dann startet der Installer einen Bootstrapper, der diese Dateien sucht. Scheinbar wird dieser vom Installer mit einem anderen Konto gestartet, denn wenn ich in diesem Bootstrapper den Temp-Pfad ausgeben lasse, dann komme ich in den Temp-Ordner und NICHT in den Unterordner. Dementsprechend findet der Bootstrapper die Dateien nicht... Hat jemand ne Lösung parat?

[Edit]
Das Problem hat schonmal jemand gehabt: http://stackoverflow.com/questions/6...ion-tempfolder

Nur ist seine Lösung nicht sehr zufriedenstellend.

[Edit2]
Langsam wirds komisch, laut Task-Manager wird der Bootstrapper unter der selben Benutzer-ID gestartet wie der Installer, müsste also den selben temporären Ordner zugewiesen bekommen. Scheinbar liegt es an der C#-Methode.

[Edit3]
Code:
MessageBox.Show("USER:" + Environment.GetEnvironmentVariable("TEMP",EnvironmentVariableTarget.User));
MessageBox.Show("Process:" + Environment.GetEnvironmentVariable("TEMP", EnvironmentVariableTarget.Process));
MessageBox.Show("Machine:" + Environment.GetEnvironmentVariable("TEMP", EnvironmentVariableTarget.Machine));
Alle drei zeigen nicht auf den Unterordner...ich verstehs nicht!

Morphie 14. Mär 2012 11:07

AW: Temporäre Dateien Unterordner "2"
 
Bei mir:
Code:
USER:C:\Users\<username>\AppData\Local\Temp
Process:C:\Users\<username>\AppData\Local\Temp\2
Machine:C:\Windows\TEMP
alternativ könnte man halt noch
Code:
Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + "\\Temp"
nehmen...

Flips 14. Mär 2012 12:56

AW: Temporäre Dateien Unterordner "2"
 
Zitat:

Zitat von Morphie (Beitrag 1156496)
Bei mir:
Code:
USER:C:\Users\<username>\AppData\Local\Temp
Process:C:\Users\<username>\AppData\Local\Temp\2
Machine:C:\Windows\TEMP

Ja, das habe ich auch wenn ich den Bootstrapper manuell ausführe.
Wenn das Setup ihn startet, ergeben sich die vorher geposteten Pfade.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:46 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz