Das mit dem aktualisieren in DER Anwendung wär eh egal ... die initialisiert nur ein paar Werte in der Registry und beendet sich dann wieder.
Nur brauch ich halt den Wert dann auch gleich nach dem Programmaufruf.
'ne Batchfile ruft anfangs dat Programm auf und wenn noch nicht vorhanden, wird von diesem die Umgebungsvariable installiert, wo der Programmpfad für die weitere installation und den späteren Betrieb drinsteht (brauch halt was, womit auch die anderen Batchfiles mit klarkommen).
Dank' erstmal für das HWND_BROADCAST ... jetzt wird zumindestens Windows schonmal aktualisiert.
Hab's jetzt mal so versucht, aber die Variable is immernoch nicht in der Batchfile verfügbar. ;(
SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0, Integer(PChar('Environment')), SMTO_BLOCK, 15000, W);
's könnte aber och sein, das CMD die Werte noch nicht hat?
Denn wenn ich danach die Batchfile erneut starte, dann ist der Wert plötzlich vorhanden.
[add]
ich wollt's eigentlich so machen:
(InitializeDefaultDir.exe installiert eventuell die Enviromentvariable)
Code:
@ECHO OFF
ECHO.
ECHO.
ECHO * initialize %%FNSEntProcDir%%
..\InitializeDefaultDir.exe
IF ERRORLEVEL 0 GOTO init
InitializeDefaultDir.exe
IF ERRORLEVEL 0 GOTO init
IF "*%FNSEntProcDir%"=="*" (
ECHO.
ECHO the required programm-directoy can't installed
PAUSE
GOTO exit
)
:init
ECHO.
ECHO.
ECHO * intall registry values
reg.exe IMPORT RegInstEx.reg
IF ERRORLEVEL 1 (
PAUSE
GOTO exit
)
IF "*%FNSEntProcDir%"=="*" (
ECHO.
ECHO %%FNSEntProcDir%% not definied
PAUSE
GOTO exit
)
ECHO.
ECHO.
ECHO * copy programm files
MD "%FNSEntProcDir%\FileSplitter"
COPY *.cmd "%FNSEntProcDir%\FileSplitter\"
COPY *.reg "%FNSEntProcDir%\FileSplitter\"
COPY *.exe "%FNSEntProcDir%\FileSplitter\"
:exit
Aber anscheinend muß ich dann die Batchfile mehrmals vom Benutzer aufrufen lassen (beim 2. Mal gings ja), oder ihn notfalls zum vorherigen starten dieses Programms auffordern (falls die Variable noch nicht initialisiert wurde).