NSIS - Define InstallDir depending on FileExists

nsis

Solution

Set $instdir in .onInit with StrCpy:

!include LogicLib.nsh

InstallDir "C:\Something\something" ; Used if neither of the files exist.

Function .onInit
${If} ${FileExists} "C:\Cisco Systems\VPN Client\Profiles"
  StrCpy $InstDir "C:\Cisco Systems\VPN Client\Profiles"
${ElseIf} ${FileExists} "$ProgramFiles\Cisco Systems\VPN Client\Profiles"
  StrCpy $InstDir "$ProgramFiles\Cisco Systems\VPN Client\Profiles"
${EndIf}
FunctionEnd

Problem

What I want to do with this script is to copy a file in a folder who already exists. But it can be at the root (C:) or in the program files. There what I want, but this script doesn’t work: ``` ${If} ${FileExists} "C:\Cisco Systems\VPN Client\Profiles" InstallDir "C:\Cisco Systems\VPN Client\Profiles" ${ElseIf} ${FileExists} "$PROGRAMFileS\Cisco Systems\VPN Client\Profiles" InstallDir "$PROGRAMFileS\Cisco Systems\VPN Client\Profiles" ${EndIf} ``` Someone can help me? Thank you

Original source