Hallo,
Ich habe das bei mir im InstallShield 2016 mit ab dem SP1 bemerkt.
Seitdem kann ich nicht mehr aus einem Prerequisite heraus auf den SETUPEXEDIR Ordner zugreifen, da die Setup.exe in das %temp% Verzeichnis kopiert wird, und dieses Verzeichnis nun der SETUPEXEDIR ist. Meine benötigten Files liegen aber im "alten" originalen SETUPEXEDIR, z.B. auf dem Desktop.
Habe beim IS-Support eine Anfrage gemacht und folgende Antwort erhalten (es geht um eine Sicherheitslücke):
It is regarding Windows Setup Launcher Executable Issues CVE-2016-2542. and the vulnerability of dll planting.
It was determined that a more robust solution to the previous fixes would be to remove the call to SetDefaultDllDirectories
In its place, the setup bootstrap will now create a safe or secure directory in the temp directory, copy the setup bootstrap to that directory, and launch it from there.
That temp directory is not writable by other processes. This removes the requirement of calling SetDefaultDllDirectories to remove the current working directory from the search path as the current working directory will only contain files related to the setup.
This was included in the later builds of 2016 SP1
So therefore the SETUPEXEDIR is not accessible for the prerequisite as you have discovered
Irgendwie unschön das Ganze, vor allem das auf dem Kundensystem Datenmüll liegen bleibt und das ein mit IS 2016 erstelltes Setup nach dem Update auf SP1 plötzlich nicht mehr läuft.
Übrigens, mein Workaround für obiges Problem ist, dass ich die Prerequisite location auf "Extract From Setup.exe" setze, somit sind alle Files im %temp% Ordner und finden sich darin wieder.
FG
Heiko