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

Squirrel shortcut target is not correct, app launches after install but shortcut does nothing. #238

Open
boid-com opened this issue Apr 6, 2018 · 7 comments

Comments

@boid-com
Copy link

boid-com commented Apr 6, 2018

Node v8.9.4
electron-forge app with default settings no asar
Windows squirrel installer. May be related to #788

Issue is that when I build executable and run it, the app installs correctly and starts on first instance. When I close the app and start it again, it doesn't work, app does not get launched.

I believe that I am handling squirrel and app.quit() events correctly:

if (require('electron-squirrel-startup')) app.quit()
and


var cleanUp = function(event) {
  if (appWindow) appWindow.close()
  // app.quit()
}


app.on('before-quit', cleanUp)

The application works as expected in dev mode and also when running the packaged exe directly (before it's packed into the squirrel installer).
The problem is only apparent when running the squirrel installed application.

After doing some more research, I found that the issue is that the created shortcut points to an executable that is not inside a version folder. It's the same problem described in this issue.
#169
I'm still looking into exactly what configuration options needs to be adjusted, as I'm just using electron-forge defaults.

Squirrel logs:

2018-04-05 23:54:36> Program: Starting Squirrel Updater: --createShortcut=Boid.exe
2018-04-05 23:54:36> ApplyReleasesImpl: About to create shortcuts for Boid.exe, rootAppDir C:\Users\johnh\AppData\Local\Boid
2018-04-05 23:54:37> ApplyReleasesImpl: Creating shortcut for Boid.exe => C:\Users\johnh\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\boid\Boid.lnk
2018-04-05 23:54:37> ApplyReleasesImpl: About to save shortcut: C:\Users\johnh\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\boid\Boid.lnk (target C:\Users\johnh\AppData\Local\Boid\Boid.exe, workingDir C:\Users\johnh\AppData\Local\Boid\app-0.0.01, args , toastActivatorCSLID e3099bf4-afe1-5f9b-997e-fcd375395cff)
2018-04-05 23:54:37> ApplyReleasesImpl: Creating shortcut for Boid.exe => C:\Users\johnh\Desktop\Boid.lnk
2018-04-05 23:54:37> ApplyReleasesImpl: About to save shortcut: C:\Users\johnh\Desktop\Boid.lnk (target C:\Users\johnh\AppData\Local\Boid\Boid.exe, workingDir C:\Users\johnh\AppData\Local\Boid\app-0.0.01, args , toastActivatorCSLID e3099bf4-afe1-5f9b-997e-fcd375395cff)
2018-04-05 23:54:37> ApplyReleasesImpl: Examining Pin: File Explorer.lnk
2018-04-05 23:54:37> ApplyReleasesImpl: Examining Pin: Google Chrome.lnk
2018-04-05 23:54:37> ApplyReleasesImpl: Examining Pin: Google Keep - notes and lists.lnk
2018-04-05 23:54:37> ApplyReleasesImpl: Examining Pin: PuTTY.lnk

"forge": { "make_targets": { "win32": ["squirrel"], "darwin": ["dmg"], "linux": ["deb", "rpm"] }, "electronPackagerConfig": { "asar": false, "icon": "./logo", "packageManager": "npm", "name": "<%= productName %>" }, "electronWinstallerConfig": { "name": "<%= productName %>" }, "electronInstallerDebian": {}, "electronInstallerRedhat": {}, "github_repository": { "owner": "", "name": "" }, "windowsStoreConfig": { "packageName": "", "name": "electroboid" } }

@boid-com
Copy link
Author

boid-com commented Apr 9, 2018

I think I found the issue:
mongodb-js/electron-squirrel-startup#30

@robinxshooter
Copy link

I still have the same issue, I've tried to change this:

const exeName = 'dist.exe'; spawnUpdate(['--createShortcut', exeName]);

to this:
const exeName = path.resolve(path.join(rootAtomFolder,'app-'+package.version+'/dist.exe')); spawnUpdate(['--createShortcut', exeName]);

but it didn't work. Is there another solution for this problem?

@boid-com
Copy link
Author

boid-com commented Jun 24, 2018

@robinxshooter
I can confirm that this works for my app. Make sure you have the name of your app set correctly so the directory is right, print it out at runtime.

var target = path.resolve(path.dirname(process.execPath),'..',app- + appInfo.version,path.basename(process.execPath))

Here is my full squirrelHandler.js
https://gist.github.com/Boid-John/e6348d0dbde4e6633ceb67bbb846ae54

Make sure you call it in your index.js
if (require('./squirrelHandler')) app.quit()

Good luck!

@LeonardoRick
Copy link

@boid-com is there a way to debug that? If i start the application I can see all information, but after building the setup file I don't know where am I supposed to to all the console.log I have inside index.js

@boid-com
Copy link
Author

boid-com commented Feb 19, 2021 via email

@knownasilya
Copy link

knownasilya commented Jul 28, 2021

Seeing this issue with electron-forge squirrel maker, which is defined here: https://github.com/electron-userland/electron-forge/blob/master/packages/maker/squirrel/src/MakerSquirrel.ts

What changes need to be made to fix this?

@jocelyn-stericker
Copy link

The wrapper was not opening my application either, when I was using this via electron-forge. Changing my app's version in package.json from "0.0.0" to "0.0.1" resolved the issue for me. Maybe there are restrictions on the version field in the wrapper application?

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

5 participants