geek1983
geek1983

Reputation:

NSIS - Define InstallDir depending on FileExists

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

Upvotes: 9

Views: 7479

Answers (1)

Anders
Anders

Reputation: 101764

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

Upvotes: 11

Related Questions