Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Changing default install location is not respected #8164

Open
psulek opened this issue Apr 3, 2024 · 0 comments
Open

Changing default install location is not respected #8164

psulek opened this issue Apr 3, 2024 · 0 comments

Comments

@psulek
Copy link

psulek commented Apr 3, 2024

  • Electron-Builder Version: 24.13.3
  • Node Version: 18.18.2
  • Electron Version: 28.1.1
  • Electron Type (current, beta, nightly): stable
  • Target: NSIS
  • OS: Windows 10

According to this custom-nsis-script , in question How do change the default installation directory to custom? there is sample of macro to use to set custom default install location.

I use that successfully with previous version of electron-builder (v20x), but in current version (24x) this functionality is broken.
Same bug was reported in #6369 but was closed due to inactivity ? That problem still persist in latest version.

My observations:
my project uses (till now) version 20.38.5 of electron-builer and when i set custom install location via recommended NSI script:

!macro preInit
    SetRegView 64
    WriteRegExpandStr HKLM "${INSTALL_REGISTRY_KEY}" InstallLocation "c:\MyApp"
    WriteRegExpandStr HKCU "${INSTALL_REGISTRY_KEY}" InstallLocation "c:\MyApp"
    SetRegView 32
    WriteRegExpandStr HKLM "${INSTALL_REGISTRY_KEY}" InstallLocation "c:\MyApp"
    WriteRegExpandStr HKCU "${INSTALL_REGISTRY_KEY}" InstallLocation "c:\MyApp"
!macroend

and productName is MyCompany Super Product and run MSI installer (without changing install location in installer UI) my app is properly installed in c:\MyApp where i can find exe file eg. c:\MyApp\myapp.exe - this is expected and valid

But updating to latest version 24.9.1 with same nsi preInit script, and values, my app is installed into folder c:\MyApp\MyCompany Super Product and exe is found in c:\MyApp\MyCompany Super Product\myapp.exe - this is unexpected and wrong.

I found (thanks to @xyyHIT) what causing this is in file app-builder-lib/templates/nsis/assistedInstaller.nsh and function instFilesPre, where old was:

    Function instFilesPre
      ${If} ${FileExists} "$INSTDIR\*"
        ${StrContains} $0 "${APP_FILENAME}" $INSTDIR
        ${If} $0 == ""
          StrCpy $INSTDIR "$INSTDIR\${APP_FILENAME}"
        ${endIf}
      ${endIf}
    FunctionEnd

but new one has:

    Function instFilesPre
      ${StrContains} $0 "${APP_FILENAME}" $INSTDIR
      ${If} $0 == ""
        StrCpy $INSTDIR "$INSTDIR\${APP_FILENAME}"
      ${endIf}
    FunctionEnd

missing ${If} on first line of function. Maybe this change fixes some other issue or was changed by mistake. Can you elaborate this? For now im stuck on older version.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant