windows-installer icon indicating copy to clipboard operation
windows-installer copied to clipboard

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

Open boid-com opened this issue 6 years ago • 7 comments

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. electron/windows-installer#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 avatar Apr 06 '18 09:04 boid-com

I think I found the issue: https://github.com/mongodb-js/electron-squirrel-startup/issues/30

boid-com avatar Apr 09 '18 17:04 boid-com

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?

robinxshooter avatar Jun 20 '18 06:06 robinxshooter

@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!

boid-com avatar Jun 24 '18 05:06 boid-com

@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

LeonardoRick avatar Feb 19 '21 14:02 LeonardoRick

https://gist.github.com/Boid-com/e6348d0dbde4e6633ceb67bbb846ae54

On Fri, Feb 19, 2021 at 8:24 AM Leonardo Rick [email protected] wrote:

@boid-com https://github.com/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

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/electron/windows-installer/issues/238#issuecomment-782106920, or unsubscribe https://github.com/notifications/unsubscribe-auth/AHGS4R6XK6KSSHKPP2CHNJTS7ZYDNANCNFSM4EZHFEVQ .

-- John Heeter Founder @ Boid.com

boid-com avatar Feb 19 '21 17:02 boid-com

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?

knownasilya avatar Jul 28 '21 20:07 knownasilya

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?

jocelyn-stericker avatar Jan 19 '22 03:01 jocelyn-stericker