Electron-builder: nsis-web differential update fails

Created on 7 Dec 2017  ·  16Comments  ·  Source: electron-userland/electron-builder


  • Version: 19.48.2

  • Updater Version: 2.17.0

  • Target: Win NSIS-Web (x64 & ia32)


Differential update now always fails, can't say for sure when it started happening. The fallback full update works.

All I did for this test is change the version number, updater and electron-builder versions were not changed in between.

Checking for update
Found version 1.0.3 (url: Media Presenter Web Setup 1.0.3.exe)
Downloading update from Media Presenter Web Setup 1.0.3.exe
Cannot download differentially, fallback to full download: SyntaxError: C:\Users\johann.rekowski\AppData\Local\Programs\media-presenter\_blockMap.yml: Unexpected token � in JSON at position 0
SyntaxError: C:\Users\johann.rekowski\AppData\Local\Programs\media-presenter\_blockMap.yml: Unexpected token � in JSON at position 0
    at JSON.parse (<anonymous>)
    at C:\Users\johann.rekowski\AppData\Local\Programs\media-presenter\resources\app.asar\node_modules\jsonfile\index.js:33:18
    at C:\Users\johann.rekowski\AppData\Local\Programs\media-presenter\resources\app.asar\node_modules\graceful-fs\graceful-fs.js:78:16
    at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:504:3)
From previous event:
    at C:\Users\johann.rekowski\AppData\Local\Programs\media-presenter\resources\app.asar\node_modules\electron-updater\out\differentialDownloader\SevenZipDifferentialDownloader.js:44:84
From previous event:
    at SevenZipDifferentialDownloader.download (C:\Users\johann.rekowski\AppData\Local\Programs\media-presenter\resources\app.asar\node_modules\electron-updater\out\differentialDownloader\SevenZipDifferentialDownloader.js:46:11)
    at C:\Users\johann.rekowski\AppData\Local\Programs\media-presenter\resources\app.asar\node_modules\electron-updater\out\NsisUpdater.js:102:36
    at Generator.next (<anonymous>)
    at runCallback (timers.js:781:20)
    at tryOnImmediate (timers.js:743:5)
    at processImmediate [as _immediateCallback] (timers.js:714:5)
From previous event:
    at C:\Users\johann.rekowski\AppData\Local\Programs\media-presenter\resources\app.asar\node_modules\electron-updater\out\NsisUpdater.js:126:33
    at C:\Users\johann.rekowski\AppData\Local\Programs\media-presenter\resources\app.asar\node_modules\electron-updater\out\BaseUpdater.js:85:23
    at Generator.next (<anonymous>)
    at FSReqWrap.oncomplete (fs.js:135:15)
From previous event:
    at NsisUpdater.executeDownload (C:\Users\johann.rekowski\AppData\Local\Programs\media-presenter\resources\app.asar\node_modules\electron-updater\out\BaseUpdater.js:95:11)
    at C:\Users\johann.rekowski\AppData\Local\Programs\media-presenter\resources\app.asar\node_modules\electron-updater\out\NsisUpdater.js:84:25
From previous event:
    at NsisUpdater.doDownloadUpdate (C:\Users\johann.rekowski\AppData\Local\Programs\media-presenter\resources\app.asar\node_modules\electron-updater\out\NsisUpdater.js:133:11)
    at C:\Users\johann.rekowski\AppData\Local\Programs\media-presenter\resources\app.asar\node_modules\electron-updater\out\AppUpdater.js:350:37
    at Generator.next (<anonymous>)
From previous event:
    at NsisUpdater.downloadUpdate (C:\Users\johann.rekowski\AppData\Local\Programs\media-presenter\resources\app.asar\node_modules\electron-updater\out\AppUpdater.js:355:11)
    at C:\Users\johann.rekowski\AppData\Local\Programs\media-presenter\resources\app.asar\node_modules\electron-updater\out\AppUpdater.js:324:63
From previous event:
    at NsisUpdater.doCheckForUpdates (C:\Users\johann.rekowski\AppData\Local\Programs\media-presenter\resources\app.asar\node_modules\electron-updater\out\AppUpdater.js:326:11)
    at C:\Users\johann.rekowski\AppData\Local\Programs\media-presenter\resources\app.asar\node_modules\electron-updater\out\AppUpdater.js:275:37
    at Generator.next (<anonymous>)
    at runCallback (timers.js:781:20)
    at tryOnImmediate (timers.js:743:5)
    at processImmediate [as _immediateCallback] (timers.js:714:5)
From previous event:
    at NsisUpdater._checkForUpdates (C:\Users\johann.rekowski\AppData\Local\Programs\media-presenter\resources\app.asar\node_modules\electron-updater\out\AppUpdater.js:280:11)
    at NsisUpdater.checkForUpdates (C:\Users\johann.rekowski\AppData\Local\Programs\media-presenter\resources\app.asar\node_modules\electron-updater\out\AppUpdater.js:226:39)
    at App.update (C:\Users\johann.rekowski\AppData\Local\Programs\media-presenter\resources\app.asar\index.bundle.min.js:1:2487)
    at Object.onceWrapper (events.js:318:30)
    at emitTwo (events.js:130:20)
    at App.emit (events.js:213:7)
New version 1.0.3 has been downloaded to C:\Users\JOHANN~1.REK\AppData\Local\Temp\up-UpFLHU\Media%20Presenter%20Web%20Setup%201.0.3.exe

My config:

appId: media.presenter
copyright: "© 2016 - 2017 MEGO GmbH"
compression: maximum
npmRebuild: false

files:
  - "**/*"
  - "!{app,build,electron,mobile,theme,videos,util,dist,dist-app/app.bundle.js,dist-app/dependencies/shim.min.js,dist-app/dependencies/classList.min.js,dist-app/dependencies/web-animations.min.js,favicon.ico,index.html,index-aot.html,index-cordova.html,index.js,index-electron.js,index.bundle.js,systemjs.config.js,systemjs-angular-loader.js,package-lock.json}"
  - "!*config*.json"
  - "!**/*.{ts,scss,map,md,csv,wrapped,yml}"
  - "!**/*.{o,hprof,orig,pyc,pyo,rbc}"
  - "!**/._*"
  - "!**/{.DS_Store,.git,.hg,.svn,CVS,RCS,SCCS,__pycache__,thumbs.db,.gitignore,.gitattributes,.editorconfig,.flowconfig,.yarn-metadata.json,.idea,appveyor.yml,.travis.yml,circle.yml,npm-debug.log,.nyc_output,yarn.lock,.yarn-integrity}"

publish:
  provider: generic
  url: "https://[redacted]/${os}"

win:
  verifyUpdateCodeSignature: false
  target:
    - nsis-web

nsisWeb:
  deleteAppDataOnUninstall: true
bug electron-updater

All 16 comments

I have the same issue on my project. But the output is a little bit different:

...
...
...
File has 433 changed blocks
Full: 55,823.95 KB, To download: 4,998.19 KB (9%)
Cannot download differentially, fallback to full download: Error: Content-Type "multipart/byteranges" is expected, but got "application/octet-stream"
...
...
...

@HitomiTenshi electron-updater version?

@mateullull It is unrelated error. Fixed in 2.17.3 for S3. What provider do you use?

@mateullull It is unrelated error. Fixed in 2.17.3 for S3. What provider do you use?

It's GitHub Releases provider.
I have this versions:

"electron-updater": "2.17.2",
"electron-builder": "19.48.3",

@develar I stated it in the issue at the top Updater Version: 2.17.0
Maybe I should've written electron-updater version, sorry if I wasn't clear enough.

@develar I tried electron-updater 2.17.3 and the same error still happens:

Checking for update
Found version 1.0.6 (url: Media Presenter Web Setup 1.0.6.exe)
Downloading update from Media Presenter Web Setup 1.0.6.exe
Cannot download differentially, fallback to full download: SyntaxError: C:\Users\johann.rekowski\AppData\Local\Programs\media-presenter\_blockMap.yml: Unexpected token � in JSON at position 0
SyntaxError: C:\Users\johann.rekowski\AppData\Local\Programs\media-presenter\_blockMap.yml: Unexpected token � in JSON at position 0
    at JSON.parse (<anonymous>)
    at C:\Users\johann.rekowski\AppData\Local\Programs\media-presenter\resources\app.asar\node_modules\jsonfile\index.js:33:18
    at C:\Users\johann.rekowski\AppData\Local\Programs\media-presenter\resources\app.asar\node_modules\graceful-fs\graceful-fs.js:78:16
    at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:504:3)
From previous event:
    at C:\Users\johann.rekowski\AppData\Local\Programs\media-presenter\resources\app.asar\node_modules\electron-updater\out\differentialDownloader\SevenZipDifferentialDownloader.js:44:84
From previous event:
    at SevenZipDifferentialDownloader.download (C:\Users\johann.rekowski\AppData\Local\Programs\media-presenter\resources\app.asar\node_modules\electron-updater\out\differentialDownloader\SevenZipDifferentialDownloader.js:46:11)
    at C:\Users\johann.rekowski\AppData\Local\Programs\media-presenter\resources\app.asar\node_modules\electron-updater\out\NsisUpdater.js:104:36
    at Generator.next (<anonymous>)
    at runCallback (timers.js:781:20)
    at tryOnImmediate (timers.js:743:5)
    at processImmediate [as _immediateCallback] (timers.js:714:5)
From previous event:
    at C:\Users\johann.rekowski\AppData\Local\Programs\media-presenter\resources\app.asar\node_modules\electron-updater\out\NsisUpdater.js:128:33
    at C:\Users\johann.rekowski\AppData\Local\Programs\media-presenter\resources\app.asar\node_modules\electron-updater\out\BaseUpdater.js:88:23
    at Generator.next (<anonymous>)
    at FSReqWrap.oncomplete (fs.js:135:15)
From previous event:
    at NsisUpdater.executeDownload (C:\Users\johann.rekowski\AppData\Local\Programs\media-presenter\resources\app.asar\node_modules\electron-updater\out\BaseUpdater.js:98:11)
    at C:\Users\johann.rekowski\AppData\Local\Programs\media-presenter\resources\app.asar\node_modules\electron-updater\out\NsisUpdater.js:85:25
From previous event:
    at NsisUpdater.doDownloadUpdate (C:\Users\johann.rekowski\AppData\Local\Programs\media-presenter\resources\app.asar\node_modules\electron-updater\out\NsisUpdater.js:135:11)
    at C:\Users\johann.rekowski\AppData\Local\Programs\media-presenter\resources\app.asar\node_modules\electron-updater\out\AppUpdater.js:361:37
    at Generator.next (<anonymous>)
From previous event:
    at NsisUpdater.downloadUpdate (C:\Users\johann.rekowski\AppData\Local\Programs\media-presenter\resources\app.asar\node_modules\electron-updater\out\AppUpdater.js:366:11)
    at C:\Users\johann.rekowski\AppData\Local\Programs\media-presenter\resources\app.asar\node_modules\electron-updater\out\AppUpdater.js:335:63
From previous event:
    at NsisUpdater.doCheckForUpdates (C:\Users\johann.rekowski\AppData\Local\Programs\media-presenter\resources\app.asar\node_modules\electron-updater\out\AppUpdater.js:337:11)
    at C:\Users\johann.rekowski\AppData\Local\Programs\media-presenter\resources\app.asar\node_modules\electron-updater\out\AppUpdater.js:286:37
    at Generator.next (<anonymous>)
    at runCallback (timers.js:781:20)
    at tryOnImmediate (timers.js:743:5)
    at processImmediate [as _immediateCallback] (timers.js:714:5)
From previous event:
    at NsisUpdater._checkForUpdates (C:\Users\johann.rekowski\AppData\Local\Programs\media-presenter\resources\app.asar\node_modules\electron-updater\out\AppUpdater.js:291:11)
    at NsisUpdater.checkForUpdates (C:\Users\johann.rekowski\AppData\Local\Programs\media-presenter\resources\app.asar\node_modules\electron-updater\out\AppUpdater.js:237:39)
    at App.update (C:\Users\johann.rekowski\AppData\Local\Programs\media-presenter\resources\app.asar\index.bundle.min.js:1:2487)
    at Object.onceWrapper (events.js:318:30)
    at emitTwo (events.js:130:20)
    at App.emit (events.js:213:7)
New version 1.0.6 has been downloaded to C:\Users\JOHANN~1.REK\AppData\Local\Temp\up-CSuRw0\Media%20Presenter%20Web%20Setup%201.0.6.exe

@HitomiTenshi Working on it. Will be investigated and fixed if need this week.

@develar no rush, take your time.

Same issue version 2.16.2 electron-updater. electron-builder 19.28.2

blockMapFileData was reported as is (any) and used as is, but after implementing AppImage update, type was changed from json string to raw deflate buffer.

@develar can you re-open this issue? I'm getting the same error on electron-updater - 2.18.2 and electron-builder - 19.53.6

[2018-02-28 00:32:40:0830] [info] Checking for update
[2018-02-28 00:32:50:0221] [info] Found version 1.8.2 (url: zulip-web-setup-1.8.2.exe)
[2018-02-28 00:32:50:0223] [info] Downloading update from zulip-web-setup-1.8.2.exe
[2018-02-28 00:33:05:0023] [error] Cannot download differentially, fallback to full download: Error: EPERM: operation not permitted, open 'C:\Program Files\Zulip\package.7z'
    at C:\Program Files\Zulip\resources\app.asar\node_modules\builder-util-runtime\src\blockMapApi.ts:22:20
    at Generator.next (<anonymous>)
From previous event:
    at readEmbeddedBlockMapData (C:\Program Files\Zulip\resources\app.asar\node_modules\builder-util-runtime\out\blockMapApi.js:39:21)
    at C:\Program Files\Zulip\resources\app.asar\node_modules\electron-updater\src\differentialDownloader\FileWithEmbeddedBlockMapDifferentialDownloader.ts:11:44
    at Generator.next (<anonymous>)
    at runCallback (timers.js:672:20)
    at tryOnImmediate (timers.js:645:5)
    at processImmediate [as _immediateCallback] (timers.js:617:5)
From previous event:
    at FileWithEmbeddedBlockMapDifferentialDownloader.download (C:\Program Files\Zulip\resources\app.asar\node_modules\electron-updater\out\differentialDownloader\FileWithEmbeddedBlockMapDifferentialDownloader.js:37:11)
    at C:\Program Files\Zulip\resources\app.asar\node_modules\electron-updater\src\NsisUpdater.ts:177:10
    at Generator.next (<anonymous>)
From previous event:
    at NsisUpdater.differentialDownloadWebPackage (C:\Program Files\Zulip\resources\app.asar\node_modules\electron-updater\out\NsisUpdater.js:232:11)
    at C:\Program Files\Zulip\resources\app.asar\node_modules\electron-updater\src\NsisUpdater.ts:53:24
    at Generator.next (<anonymous>)
    at runCallback (timers.js:672:20)
    at tryOnImmediate (timers.js:645:5)
    at processImmediate [as _immediateCallback] (timers.js:617:5)
From previous event:
    at C:\Program Files\Zulip\resources\app.asar\node_modules\electron-updater\out\NsisUpdater.js:118:33
    at C:\Program Files\Zulip\resources\app.asar\node_modules\electron-updater\src\BaseUpdater.ts:46:13
    at Generator.next (<anonymous>)
    at FSReqWrap.oncomplete (fs.js:114:15)
From previous event:
    at NsisUpdater.executeDownload (C:\Program Files\Zulip\resources\app.asar\node_modules\electron-updater\out\BaseUpdater.js:98:11)
    at C:\Program Files\Zulip\resources\app.asar\node_modules\electron-updater\src\NsisUpdater.ts:37:16
From previous event:
    at NsisUpdater.doDownloadUpdate (C:\Program Files\Zulip\resources\app.asar\node_modules\electron-updater\out\NsisUpdater.js:125:11)
    at C:\Program Files\Zulip\resources\app.asar\node_modules\electron-updater\src\AppUpdater.ts:331:25
    at Generator.next (<anonymous>)
From previous event:
    at NsisUpdater.downloadUpdate (C:\Program Files\Zulip\resources\app.asar\node_modules\electron-updater\out\AppUpdater.js:366:11)
    at C:\Program Files\Zulip\resources\app.asar\node_modules\electron-updater\src\AppUpdater.ts:307:49
From previous event:
    at NsisUpdater.doCheckForUpdates (C:\Program Files\Zulip\resources\app.asar\node_modules\electron-updater\out\AppUpdater.js:337:11)
    at C:\Program Files\Zulip\resources\app.asar\node_modules\electron-updater\src\AppUpdater.ts:255:25
    at Generator.next (<anonymous>)
    at runCallback (timers.js:672:20)
    at tryOnImmediate (timers.js:645:5)
    at processImmediate [as _immediateCallback] (timers.js:617:5)
From previous event:
    at NsisUpdater._checkForUpdates (C:\Program Files\Zulip\resources\app.asar\node_modules\electron-updater\out\AppUpdater.js:291:11)
    at NsisUpdater.checkForUpdates (C:\Program Files\Zulip\resources\app.asar\node_modules\electron-updater\src\AppUpdater.ts:204:35)
    at appUpdater (C:\Program Files\Zulip\resources\app.asar\main\autoupdater.js:48:14)
    at WebContents.page.once (C:\Program Files\Zulip\resources\app.asar\main\index.js:165:3)
    at Object.onceWrapper (events.js:293:19)
    at emitTwo (events.js:106:13)
    at WebContents.emit (events.js:194:7)
[2018-02-28 00:34:00:0677] [info] New version 1.8.2 has been downloaded to C:\Users\USERNAME\AppData\Local\Temp\up-K4ogsi\zulip-web-setup-1.8.2.exe
[2018-02-28 00:34:16:0618] [info] Install on explicit quitAndInstall
[2018-02-28 00:34:16:0618] [info] Install: isSilent: false, isRunAfter: true
[2018-02-28 00:34:16:0674] [info] Access denied or UNKNOWN error code on spawn, will be executed again using elevate
[2018-02-28 00:34:32:0890] [info] Checking for update
[2018-02-28 00:34:39:0297] [info] Update for version 1.8.2 is not available (latest version: 1.8.2, downgrade is disallowed.
[2018-02-28 18:50:00:0827] [info] Checking for update
[2018-02-28 18:50:07:0162] [info] Update for version 1.8.2 is not available (latest version: 1.8.2, downgrade is disallowed.

Here is the code for auto-update and config file.
https://github.com/zulip/zulip-electron/blob/master/package.json
https://github.com/zulip/zulip-electron/blob/master/app/main/autoupdater.js

@akashnimare @develar I'm having the exact same problem. Any updates?

electron-builder 20.6.2
electron-updater 2.21.4
[2018-03-27 16:01:19.756] [info] Checking for update [2018-03-27 16:01:21.631] [info] Found version 1.0.1 (url: Appdash Web Setup 1.0.1.exe) [2018-03-27 16:01:21.632] [info] Downloading update from Appdash Web Setup 1.0.1.exe [2018-03-27 16:01:21.649] [info] No cached update available [2018-03-27 16:01:22.813] [info] Download speed: 257328 - Downloaded 51.246073663206914% (264790/516703) [2018-03-27 16:01:23.052] [info] Download speed: 407494 - Downloaded 100% (516703/516703) [2018-03-27 16:01:23.891] [error] Cannot download differentially, fallback to full download: Error: EPERM: operation not permitted, open 'C:\Program Files\Appdash\package.7z' at readEmbeddedBlockMapData (C:\Program Files\Appdash\resources\app.asar\node_modules\builder-util-runtime\src\blockMapApi.ts:22:20) at FileWithEmbeddedBlockMapDifferentialDownloader.download (C:\Program Files\Appdash\resources\app.asar\node_modules\electron-updater\src\differentialDownloader\FileWithEmbeddedBlockMapDifferentialDownloader.ts:11:44) at <anonymous> at process._tickCallback (internal/process/next_tick.js:188:7)

I don't know. I still need to repro this on electron-updater - v2.21.4. Can you give us a little bit info about your Windows system and electron-builder's config?

Running Windows 10.
"dependencies": { "electron-log": "^2.2.14", "electron-updater": "^2.21.4" }, "bin": {}, "devDependencies": { "electron": "^1.8.4", "electron-builder": "^20.6.2", "electron-publisher-s3": "^20.7.0" }, "build": { "appId": "com.appdash", "compression": "normal", "win": { "target": "nsis-web" }, "publish": { "provider": "s3", "bucket": "appdash" }, "nsisWeb": { "oneClick": false, "perMachine": true, "allowToChangeInstallationDirectory": true, "differentialPackage": true } }
I found that changing the permissions of the package.7z file to full control for everyone fixes it and then differential download works fine. By default it's set to "special permissions"

@zhaoterryy same thing happening here. Did you find a programatic solution as opposed to changing the permissions from the s3 console?


{
  "build": {
    "win": {
      "certificateSubjectName": "HIDDEN",
      "target": [
        "nsis-web"
      ],
      "icon": "build/icon.ico"
    },
    "nsis": {
      "perMachine": true,
      "installerIcon": "build/icon.ico",
      "uninstallerIcon": "build/icon.ico"
    },
    "publish": {
      "provider": "s3",
      "bucket": "bucket...",
      "path": "${os}"
    },
    "files": [
      "main.js",
      "src/",
      "lib/"
    ],
  "devDependencies": {
    "cross-env": "^5.1.4",
    "electron": "^2.0.0",
    "electron-builder": "^20.13.1",
    "electron-publisher-s3": "^20.13.1",
    "npm-run-all": "^4.1.3"
  },
  "dependencies": {
    "async": "^2.6.0",
    "electron-json-storage": "^4.1.0",
    "electron-log": "^2.2.14",
    "electron-updater": "^2.21.10",
    "fb": "^2.0.0",
    "fs-extra": "^5.0.0",
    "get-folder-size": "^1.0.1",
    "lodash": "^4.17.10",
    "node-uuid": "^1.4.8",
    "request": "^2.85.0",
    "request-promise-native": "^1.0.5",
    "sourcemapped-stacktrace": "^1.1.8"
  }
}

Unfortunately not, decided on using generic provider instead of s3. It would be cool if this was fixed but it's only a slight inconvenience.

Also, when I said full control/special permissions, I was talking about Windows user permissions not s3.

@akashnimare @zhaoterryy
I have same issue like you people. Is this fixed?

FYI:
I used generic option only
Versions:
electron : 2.0.2
electron-builder : 20.15.1
electron-updater : 2.21.10

Tested both in window 7 and 10

Configuration in my package.json
"build": { "productName": "FluidArchitect", "appId": "app.FluidArchitect", "win": { "target": "nsis-web", "icon": "http://192.168.3.149:8080/resources/appIcon.ico", "publish": { "provider": "generic", "useMultipleRangeRequest": false, "url": "http://na01-tfs02:8080/beta/nsis-web/", "channel": "latest" } }, "nsisWeb": { "artifactName": "${productName}-Setup-${version}.exe", "oneClick": false, "perMachine": true, "allowToChangeInstallationDirectory": true, "runAfterFinish": true, "deleteAppDataOnUninstall": true, "differentialPackage": true, "createDesktopShortcut": true } }

Here is one more observation
When there is only one user(Administrator) it's working absolutely fine.

But if I we have two users like Administrator and Madhu Kudala, If you are logged in as Madhu Kudala and Installed the app with Run as Administrator or Normally. Then it has problem Error: EPERM: operation not permitted, open C:\Program Files\xxx\package.7z

If you guys find any solution(Programmatically) please help me to fix this.

Thank you.

Was this page helpful?
0 / 5 - 0 ratings