A question in regards to the features that this or other packages might offer.
Right now it's a very tedious process for us to have deploy a full client update for little things we want to deploy/tweak. Is there a way for us to update files within the asar or redeploy just the asar without having to bundle everything up into a new installer?
Windows or Mac? Or both?
Windows. Sorry forgot to mention that.
Is there any concept/ideas of how this would be possible? Or not without a decent chunk of extra work/time I imagine @develar
There are number of plugins to prepare delta updates for NSIS. We just need to integrate it. Problem is that now I need to take my child to a kindergarten and can work on this project only several hours on weekend, not every morning as before :) if you really need this feature — you can make donation. This feature is not important for all users and not yet planned to be implemented. Although not moved to backlog.
Thanks for the information, will follow up when I have a bit more time. Just wanted to find out if this was possible and how you would try and go about it.
I assume something like the above would work with an asar file too if it is doing binary diff's on the files in theory right?
Might see if I can attempt to integrate something like this myself and fork it back in and then if I get stumped donate and ask for help :D
if it is doing binary diff's on the files in theory right?
Yes. Because other files will be the same, delta update will be very small. Yes — main exe file will be modified each build, because we do set icon using rcedit. Well, to investigate, but in general should be ok.
Moved to backlog to keep issue list clear.
Reopened — donated.
Is it ok if only win 10 will be supported (just a question)?
Ideally we would want all Windows systems supported. We have about 50% of our users on Windows 10. Got a lot of people on older operating systems still.
Do you mean that you don't want to publish new installer, but only patch?
Yes.
In a perfect world we would just distribute
Badlion Web Installer.exe
Then this Web installer would contact remote servers and say "I have no version installed" or "I have X version installed", and then from there it would either: (1) Give a full version if they don't have it installed on their machine or (2) do a patch update if their version is patchable.
I'm not sure if we want to have to make the user apply 3 patches to go from
1.1 to 1.1.1 to 1.2 to 1.3 if they haven't run our client since 1.1.
Just wanted to clarify with the example above we are using the web installer since we are publishing both the ia32 and x64 versions and just wanted to make the process as easy on the end users as possible so the less tech knowledgeable people don't have to figure out if they have 32 or 64 bit.
Appx way is super cool. Yes — stupid 64k blocks are not aware of PE exe format and delta size will be not really optimal, but it allows us
HAve you considered to publish app to Windows store?
Haven't considered it yet, but this is only for Windows 10 again right?
MS sucks — no way to use appx on win 8 — so, appx is not popular and we have to reinvent the wheel and still use nsis.
No surprises there .-.
Where do you host updates?
On S3 at the moment with Cloudfront in front of it for CDN support.
Differential update will be implemented — as appx. No delta files at all — yep. Nothing.
Will this work for Windows 7 (Service Pack 1), Windows 8/8.1, and Windows 10?
Thanks.
Yes. No doubt — no hope to reuse win implementation. But at least new format will be not reinvented.
If you want to help: please build webInstaller with -c.nsis.differentialPackage=true
(electron-builder 19.8.0) Package file will have zip extension. Is size of package changed (compared to 7z)? What is size difference?
(this feature not ready, so, set differentialPackage to true only to test size).
I don't have access at the moment to do this, but I will ask one of my guys to help test this feature out for you.
Just to clarify we are using the generic publishing option since we are using cloudfront.
Here is the information you requested @develar
zip size w/ maximum =Â Â http://i.imgur.com/E9EpZRj.png
7z size w/ maximum = http://i.imgur.com/MGAWix7.png
144 to 155.
134 to 146.
Yeach, it is price. I hope you don't disable ASAR?
No we don't disable asar
Sorry for slow responses. On vacation atm
Hey, back from vacation. Any new progress on this feature?
Bump @develar
@mastergberry Sorry for delay, implementation still not ready to use. I hope will be in 1-2 weeks.
All good just hadn't seen any activity for a while. Thanks for the info :)
Any updates on this?
Electron-builder side: done. packages field is added to update info. Updater downloads package file using special algorithm and reconstruct zip file. And pass --packageFile arg to installer.
Nsis installer side: done. Web installer only for now, as planned. Switched from nsis7z plugin to external 7za because nsis plugin cannot decompress zip file with lzma compression. Fixing nsis7z plugin — no luck. Maybe later, in any case, external invocation is not bad. Xz compression is not used, because 7z doesn't yet apply filters in this case. Described above arg allows web installer to use local package file instead of remote.
7za is signed using user cert to ensure that will be not blocked or slowly checked. ia32 is used for any arch because one installer is used for both archs. Later x64 can bundled for x64 only installer, but it is out of scope. Adds 200kb to installer size — doesn't matter. Final installer only 900KB (because built-in lzma nsis compression is used).
What's left — updater side. The most tricky part — understanding and modifying zip file is done, so, quite easy task. To test, serve-static is added — supports range headers.
So, this task will be finally implemented next week, one week before my vacation :)
Sounds awesome. Thanks for the update. Were there any questions you still had about usage or was everything explained clearly enough already?
For now, delta updates will be not supported for Bintray. Feel free to file issue to support it (reason — bintray is not reliable, not cheap and so on — out of scope for this issue (fix is easy, but anyway)).
Multipart ranges will be not used for now to download non sequential chunks — if user uses ASAR (as user must, in the future new more visible warning will be added), it doesn't impact http request count significantly.
This functionality included into electron-builder 19.28.1 & electron-updater 2.9.0
To enable, set differentialPackage
to true
in the nsis
options. But only unit tests were done.
Feature will be announced when I will manually test it.
Feature is safe for production due to design (in case of error or checksum mismatch full package will be downloaded). So, it will be enabled by default as soon as manually tested.
Also, now, during update (differential or full), Electron NET is used to download package. Web installer now uses pre-downloaded package file and as result, auto update is now more reliable (no need to wait when package will be downloaded during update installation — faster relaunch).
Will this automatically work with older generated nsis installations?
Yes, it is fully backward compatible.
Expected output:
[2017-09-07 17:02:18.758] [info] Found version 0.5.14 (url: https://develar.s3.amazonaws.com/onshape-test/Onshape%20Web%20Setup%200.5.14.exe)
[2017-09-07 17:02:18.759] [info] Downloading update from https://develar.s3.amazonaws.com/onshape-test/Onshape%20Web%20Setup%200.5.14.exe
[2017-09-07 17:02:19.758] [info] File Onshape.exe has 1 changed blocks
[2017-09-07 17:02:19.759] [info] File resources/app.asar has 7 changed blocks
[2017-09-07 17:02:19.763] [info] Full: 37,852.94 KB, To download: 447.09 KB (0.1%)
We are forced to process created ZIP because of https://sourceforge.net/p/sevenzip/discussion/45797/thread/61905a4c/ We must validate the whole file integrity and so, file modification date must be removed. As we already do for 7z format.
It means that will be negligible package size difference. Not so big as in case of ZIP format. In the future we can use solid compression for some custom directories.
Fixed in:
electron-builder 19.28.4 (next)
electron-updater 2.9.3 (next)
@mastergberry Without support from your side this feature would never have been made.
Can't wait to start using it soon. We had to build another system which was not as nice as this one and in the end of the day really doesn't help us save much bandwidth like this one will.
What will be implemented in the next version of this feature — user should be able to apply solid compression for some dirt (static or vendor assets can be packaged as one block). And multipart range — to download all data in one http request. Current release will be marked as latest after my vacation.
Thank you mastergberry and develar for this much needed feature.
You've mentioned in the release notes that there is "nothing to do" for us, other than update. I've updated to electron-builder
version 19.28.4 and electron-updater
version 2.9.0.
Can you write up a basic guide to verify that this feature is working? How can I log how many megabytes were downloaded in the update? How can I log whether a "full" update or a "partial" update was done? Etc.
@Zamiell Detailed user explanation will be 22 or till end of September. I.e. when release will be marked as latest.
In short — it works for nsis-web target (Web Installer). How to check — see my comment above https://github.com/electron-userland/electron-builder/issues/1523#issuecomment-327828748
Is it available for default nsis? Not yet, but planned. At first I want to hear @mastergberry feedback.
This is just supported in windows now?
Btw @develar haven't had time to test this yet myself. Don't hold up on me to release to the public at the moment. If it's ready to launch go for it, have some other priorities keeping me occupied atm.
Seems to work great with my nsis-web installer using s3 out of the box. My installer has both 64/32 bit. I compared the logs with what you wrote @develar in comment #1523 and it looks similar. Update only took a couple of seconds. Thank you!!
@baversjo Cool. Because S3 is not DO and you pay per HTTP requests, I will fix "multipart range — to download all data in one http request" this month (it can save you some money).
@develar actually, maybe it doesn't work well for when you bundle both 64 and 32 bit in one nsis installer?
Check out my logs, it says 300 changed blocks and To download: 28,127.43 KB
. However, it also says (0.03%) which sounds like the delta is 0.03%? Maybe the logs are just wrong when you have a 64/32 bit installer, because it still downloaded the update in 1 second per my logs..
{"level":"info","message":"Found version 2.1.4 (url: https://smrt-releases.s3.amazonaws.com/SMRT%20Web%20Setup%202.1.4.exe)","timestamp":"2017-09-27T13:01:53.947Z"}
{"level":"info","message":"update available","timestamp":"2017-09-27T13:01:53.947Z"}
{"level":"info","message":"Downloading update from https://smrt-releases.s3.amazonaws.com/SMRT%20Web%20Setup%202.1.4.exe","timestamp":"2017-09-27T13:01:53.948Z"}
{"level":"info","message":"File resources/app.asar has 141 changed blocks","timestamp":"2017-09-27T13:01:54.534Z"}
{"level":"info","message":"File SMRT.exe has 300 changed blocks","timestamp":"2017-09-27T13:01:54.535Z"}
{"level":"info","message":"Full: 43,436.8 KB, To download: 28,127.43 KB (0.03%)","timestamp":"2017-09-27T13:01:54.539Z"}
{"level":"info","message":"New version 2.1.4 has been downloaded to C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\2\\up-Kp0vdr\\SMRT Web Setup 2.1.4.exe","timestamp":"2017-09-27T13:01:55.449Z"}
{"level":"info","message":"update downloaded [{\"version\":\"2.1.4\",\"releaseDate\":\"2017-09-27T13:01:20.813Z\",\"path\":\"SMRT Web Setup 2.1.4.exe\",\"sha512\":\"cMbb4+e+a0ZO4xvxxC1Nnl3u8ASwpCZHcqwj7wayS6qBFV1KXakcNvwHELNaPVbF2i0N2SN6oH6vqgKvw0lQWw==\",\"packages\":{\"ia32\":{\"file\":\"smrt-systems-2.1.4-ia32.nsis.7z\",\"size\":39041965,\"sha512\":\"l4MPh9W7wnarTCPQp4kKzU1mxOTzuGKcCQIVJhgDGy/H9tzKt9rTZXOfcQEoM2cXzhfXFnmKi6GqKHIdhOtRGg==\",\"headerSize\":12798,\"blockMapSize\":15203},\"x64\":{\"file\":\"smrt-systems-2.1.4-x64.nsis.7z\",\"size\":44479288,\"sha512\":\"rnLlnCW80sVM+CLPI5hzkXOkWvjj2eIQqyTqcGq4JvWk0S3f/bVtlFW7IhKnCWjItqNN9dT23BsRLAEXeZPT8g==\",\"headerSize\":12798,\"blockMapSize\":16698}},\"sha2\":\"11a9451bfd087aa3068a16b13d2d6bb2cc6a63052bf4b53ef68eb201dfd0aa97\"}]","timestamp":"2017-09-27T13:01:55.449Z"}
Size is correct, 300*64 + 141 * 64 ~= 28,127.43 (block size is 64 KB except last block of file). I will check strange "(0.03%)".
you bundle both 64 and 32 bit in one nsis installer?
It doesn't matter.
Do you build on CI? Is app signed? Is it possible to show diff between two versions? Maybe electron version was changed? Do you use latest 19.31.1 (at least 19.30)?
@develar
No we build manually on a 64win computer.
The app is signed yes, I can see how the system signs the 32bit exe, 64bit exe and the installer.
We use native modules, so they need to be compiled for the 32bit and 64bit exe (it seems electron-builder handles that automatically).
How would you like me to show diff? Diff in code? No we've made no changes to electron versions etc. We did a couple of updates, only changing the package.json from version 2.1.6 to 2.17 as the only change in the code, same result.
@baversjo Do you delete dist
directory or not? Cache is used for executable, because code sign changes file dramatically.
it also says (0.03%) which sounds like the delta is 0.03%?
@baversjo Percentage calculation fixed (by error was divided by 1024).
Large block invalidation will be fixed soon. Dynamic sized chunks based on hashed content approach will be used instead of static slicing. Not final, though — need to experiment (it is effective for uncompressed data, but for lzma2 stream — need to investigate).
@baversjo Delta file is smaller now, fixed in 19.36.0
Is there any possibility/intention of implementing something similar for Mac?
@XuluWarrior Yes. No in a short term, but.
@XuluWarrior #2199
@develar That's great :D
Hey @develar interesting question.
With this version does it no longer run the uninstaller on each update?
We want to only uninstall certain parts of the app in a full uninstall and not when upgrading versions.
Thanks.
@mastergberry our position remains — new installer it is a black box. Full reinstall is performed.
Hmmm, this is kinda a problem for us. Is this easy to fix/change @develar
@mastergberry what problem do you mean?
We have something we want to uninstall only during full uninstalls.
This is because when we install it, it requires a full reboot and we don't want the user to have to reboot everytime we deliver an update.
So we want a "Full Uninstaller" (which we do remove this extra component) and an "Update Uninstaller" where we don't. E.g. upgrading from 1.2.1 -> 1.2.2 we don't uninstall this extra component but when they want to remove it from their system completely we do.
@develar sorry I thought i responded to this already.
@mastergberry so, just check flag isUpdated in your custom nsis script :) see examples in our code.
@develar just to be paranoid/sure
isUpdated = true when we are going from 1.2.1 -> 1.2.2 and false when a full uninstall is happening right?
Thanks.
@mastergberry
--updated
to installer. --updated
to uninstaller. The only exception — if flagisDeleteAppData
is set to true.So, in your custom nsis code you can use ${if} ${isUpdated}
. Both in the uninstaller and installer.
Hello,
I was looking for a way to do delta updates and came across this conversation. Am using electron-builder and autoupdater.
The tail end of the conversation seems to suggest that this can only be done for nsis-webinstaller. Is this still true? Or have you (@develar) implemented it for normal nsis installs as well.
Also, if I need to use nsis-webinstaller, can I do that ONLY for the updates? That is do an initial nsis-install and then somehow use the nsis-webinstaller for further delta updates? Mine is an enterprise product and hence the IT team would be pushing these to all machines within their network.
Thanks in Advance.
Regards,
Arun
@arun-nfactorial Please see #2217 This feature is donated by @BethanyBerkowitz It will be a Christmas present :), so, will be enabled by 25 December (99% finished, need to polish and do some integration tests)..
Oh my! Thanks to @BethanyBerkowitz then :) I shall wait for this. Need this to be rolled out to a Client.
Hello @BethanyBerkowitz and @develar - Has this feature been rolled out?
Warm Regards,
Arun
@Bioswami-nfac I have unexpected Christmas vacation. Will be finished in several days.
@develar Thanks for the quick revert. Any approximate timeline for this? Merry Christmas to you !
Hi @develar, any ETA on this feature ?
Yes, we'd love to see this come though!
Hey @develar thanks again for adding this feature upon request. I finally am getting time to implement this for our system (we have been rehauling our entire project and this is one of the last things I need to do for it).
We had another solution we were using before to patch certain files (native modules) and I want to understand what the differentialPackage flag system will do if a file is no longer valid.
So let's say i start off with version 2.0.0
I send out an update using our independent updater system to change one file on the end user's machine. A native module in this case.
I make version 2.0.1 afterwards which fixes various bugs.
The user is then presented to update to 2.0.1. Will the system make him do a clean install because his files don't match the 2.0.0 package anymore? (due to the one native module update we sent out). Or will it just make him re-download that one file? Or what will happen exactly.
If we need to dissolve the independent updater system and only use the electron-builder update system this is possible, but I just wanted to understand how it would work.
Thanks.
Following up on this since I got to toy around with the system finally today. This system doesn't seem to be playing nice with amazon s3? Looks like in theory it should work since the Accept-ranges
flag is set to bytes. I also see you were testing on amazon s3 when you did it @develar. Only difference is that I am not using your publishing tool to do it. Is there some extra flag we need to set? When looking at the documentation I don't see anything.
Also i saw you mentioned something about deleting or not deleting dist? Should we be deleting it or not, since the code signing seems to be changing a lot. The actual diff calculation it did was huge in my case.
2018/01/10 21:01:35:0858 Full: 109,481.01 KB, To download: 58,589.19 KB (54%)
My main issue at the moment is still the fact that it's not wanting to download the diff though.
Info from amazon
HTTP/1.1 200 OK
x-amz-id-2: b1srveAIFEJHuJr/aoUdo+4Z/A3R444KdfqUYUDtAdDDvtcWTvBVvM6iItK/uBSnhOxRZokXxGg=
x-amz-request-id: FDD2CDE29FA6933C
Date: Wed, 10 Jan 2018 20:12:24 GMT
Last-Modified: Wed, 10 Jan 2018 19:58:43 GMT
ETag: "b6fe15bf9c0dacfe7d8ff313dd8faaae-7"
Accept-Ranges: bytes
Content-Type: application/x-7z-compressed
Content-Length: 112108554
Server: AmazonS3
2018/01/10 21:01:35:0990 Cannot download differentially, fallback to full download: HttpError: 400 Bad Request
Headers: {
"connection": [
"close"
],
"date": [
"Wed, 10 Jan 2018 20:01:38 GMT"
],
"server": [
"AmazonS3"
],
"transfer-encoding": [
"chunked"
]
}
at createHttpError (C:\Program Files\testclient\resources\app.asar\node_modules\builder-util-runtime\src\httpExecutor.ts:31:10)
at checkIsRangesSupported (C:\Program Files\testclient\resources\app.asar\node_modules\electron-updater\src\differentialDownloader\multipleRangeDownloader.ts:104:12)
at ClientRequest.differentialDownloader.httpExecutor.doRequest.response (C:\Program Files\testclient\resources\app.asar\node_modules\electron-updater\src\differentialDownloader\multipleRangeDownloader.ts:82:10)
at emitOne (events.js:96:13)
at ClientRequest.emit (events.js:191:7)
at URLRequest.ClientRequest.urlRequest.on (C:\Program Files\testclient\resources\electron.asar\browser\api\net.js:207:12)
at emitOne (events.js:96:13)
at URLRequest.emit (events.js:191:7)
From previous event:
at C:\Program Files\testclient\resources\app.asar\node_modules\electron-updater\src\differentialDownloader\DifferentialDownloader.ts:92:5
at Generator.next (<anonymous>)
at C:\Program Files\testclient\resources\app.asar\node_modules\graceful-fs\graceful-fs.js:241:16
at FSReqWrap.oncomplete (fs.js:114:15)
From previous event:
at FileWithEmbeddedBlockMapDifferentialDownloader.downloadFile (C:\Program Files\testclient\resources\app.asar\node_modules\electron-updater\out\differentialDownloader\DifferentialDownloader.js:216:11)
at FileWithEmbeddedBlockMapDifferentialDownloader.doDownload (C:\Program Files\testclient\resources\app.asar\node_modules\electron-updater\src\differentialDownloader\DifferentialDownloader.ts:83:17)
at C:\Program Files\testclient\resources\app.asar\node_modules\electron-updater\src\differentialDownloader\FileWithEmbeddedBlockMapDifferentialDownloader.ts:11:16
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\testclient\resources\app.asar\node_modules\electron-updater\out\differentialDownloader\FileWithEmbeddedBlockMapDifferentialDownloader.js:37:11)
at C:\Program Files\testclient\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\testclient\resources\app.asar\node_modules\electron-updater\out\NsisUpdater.js:232:11)
at C:\Program Files\testclient\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\testclient\resources\app.asar\node_modules\electron-updater\out\NsisUpdater.js:118:33
at C:\Program Files\testclient\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\testclient\resources\app.asar\node_modules\electron-updater\out\BaseUpdater.js:98:11)
at C:\Program Files\testclient\resources\app.asar\node_modules\electron-updater\src\NsisUpdater.ts:37:16
From previous event:
at NsisUpdater.doDownloadUpdate (C:\Program Files\testclient\resources\app.asar\node_modules\electron-updater\out\NsisUpdater.js:125:11)
at C:\Program Files\testclient\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\testclient\resources\app.asar\node_modules\electron-updater\out\AppUpdater.js:366:11)
at C:\Program Files\testclient\resources\app.asar\node_modules\electron-updater\src\AppUpdater.ts:307:49
From previous event:
at NsisUpdater.doCheckForUpdates (C:\Program Files\testclient\resources\app.asar\node_modules\electron-updater\out\AppUpdater.js:337:11)
at C:\Program Files\testclient\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\testclient\resources\app.asar\node_modules\electron-updater\out\AppUpdater.js:291:11)
at NsisUpdater.checkForUpdates (C:\Program Files\testclient\resources\app.asar\node_modules\electron-updater\src\AppUpdater.ts:204:35)
at initAutoUpdater (C:\Program Files\testclient\resources\app.asar\app\src\background.js:364:15)
at WebContents.<anonymous> (C:\Program Files\testclient\resources\app.asar\app\background.js:569:5)
at emitOne (events.js:96:13)
at WebContents.emit (events.js:191:7)
@mastergberry Updater downloads a new package for a new version differentially — only changed parts of file. If your app downloads some native module to cache location on a user machine and need to update it for a new version — is out of updater scope.
My main issue at the moment
electron-updater version? is it s3 directly or via some proxy?
@develar
"electron-updater": "2.18.2",
"electron-builder": "19.52.1",
electron-updater is in dependencies
and electron-builder in devDependencies
In regards to the native modules we bundle them with electron-builder, but we have an extra system we built on top just to download these small updates. If the whole electron-builder dist system is differentialized and not just the asar then we probably will drop our second system.
@mastergberry Do you use s3
provider or generic
for updater? What url is used?
@develar We use generic for the updater. Example:
"publish": {
"provider": "generic",
"url": "https://s3.amazonaws.com/{insert-bucket-here}/client-updates",
"channel": "latest"
}
I upload the web installer, the two 7z files, and the latest.yml, and of course make them all publically available to access.
Should also be noted for production we use cloudfront in front of the s3 bucket. I am just testing on our dev s3 bucket at the moment. So the generic system needs to function for us to use it with cloudfront.
Folks,
Does this mean that the differential updater has been built?
Regards,
Arun
On Thu, Jan 11, 2018 at 2:02 PM, mastergberry notifications@github.com
wrote:
@develar https://github.com/develar We use generic for the updater.
Example:"publish": {
"provider": "generic",
"url": "https://s3.amazonaws.com/{insert-bucket-here}/client-updates",
"channel": "latest"
}I upload the web installer, the two 7z files, and the latest.yml
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/electron-userland/electron-builder/issues/1523#issuecomment-356862475,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AJvnpvhBTu8W6kXpivvSVrknKQHtptLCks5tJccugaJpZM4NOD9-
.
--
Arun Krishnan, Ph.D
Founder & CEO,
nFactorial Analytical Sciences,
Email: [email protected]
Phone: +91 9880007615
URL: http://www.nfactorialanalytics.com
n!Gage, n!Factorial’s real-time employee engagement feedback platform
http://bit.ly/Intro2nGage, helps managers listen, understand and act upon
employee feedback that leads to great employee experiences and ultimately,
deeper engagement. This first-of-its-kind-in-India-platform uses analytics
to provide real-time intervention analysis, trends, predictive analysis and
much more. Winner of TechHR’s 2016 Spotlight award
https://www.peoplematters.in/article/hr-technology/spotlight-award-winners-2016-13817,
the platform is in use in several large corporations across multiple
industries.
@arun-nfactorial We are discussing about nsis-web. Differential updater for nsis
is not yet rolled out.
@mastergberry Got it. In your case S3 is not detected. I will add option to explicitly disable multi range support (because Amazon requires you to pay for requests, they simply do not support multi ranges :( to ensure that you will send more requests that actually need).
@develar So will the differential system work at all with amazon s3 or cloudfront?
Or does your system just have to make multiple requests to get the different byte blocks instead of just a single request for all byte blocks that we care about?
Something to keep in mind (at least with AWS) is that bandwidth is way more expensive than requests as shown here: https://aws.amazon.com/cloudfront/pricing/
@mastergberry Yes, for S3 (and GitHub) multiple range is not used. For each block will be a get
request. To avoid overflow and blocking due to rate limiting: 100 requests sequentially, then wait 1 second and continue to download.
@mastergberry I have added option useMultipleRangeRequest
for GenericServerOptions
. Defaults to true
if url
doesn't contain .amazonaws.
We cannot disable it by default for .cloudfront.net
because CloudFront can be used not only for S3 (and CloudFront supports multiple ranges if origin support — https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/RangeGETs.html).
@develar Ok so in theory I just need to add useMultipleRangeRequest: false
to my publish
config section and then your system will do multiple GET requests to get the multiple byte ranges.
Based on what you said ("sequentially") I believe you are doing;
GET Bytes 0-1024
Wait for Bytes 0-1024 to Download
Bytes 0-1024 Finish Downloading
GET Bytes 2048-3072
Wait for Bytes 2048-3072 to Download
Bytes 2048-3072 Finish Downloading
....and so on
and are not doing it parallel such as this with multiple threads:
GET Bytes 0-1024
GET Bytes 2048-3072
Wait for Bytes 0-1024 to Download
Wait for Bytes 2048-3072 to Download
Bytes 0-1024 Finish Downloading
Bytes 2048-3072 Finish Downloading
Yes, we cannot do it in parallel and we must insert 1second pauses due to rate limiting (we have already reports in the past that GitHup blocks updater). Also, updater should not eat all user machine CPU and IO :)
@develar I wanna eat all of their CPU and Dedicated WAM though :(
Ok everything sounds good. Let me know when this is available to test/use and I will give it a shot and report back.
I wanna eat all of their CPU
I doubt that will be some visible difference. Especially in case of NSIS, where minimum block size is 3-4 MB (because of lzma dict size).
@develar I'm sorry it was a joke :P
electron-updater 2.19.0 released (it is pre-release version, will be marked as latest in several days).
@develar Not sure how much it matters to you, but i found a bug while testing in the logging
2018/01/11 10:52:16:0816 effective url: , range: bytes=0-11853
blank effective url in the log.
In my case right here it took 363 GET requests to get all the missing byte pieces for my first test which I changed a bit more stuff. So this looks good.
Second test all I did was add an extra license text file (only 10 bytes) to check how big of a diff would be calculated. I don't have the code signing even enabled at the moment (which might make more changes you said above?)
2018/01/11 10:59:54:0646 Full: 69,472.32 KB, To download: 18,557.91 KB (27%)
Why did so much change just for a single text file? Does it have to do with the core installers or something?
Please show full logs — number of changed blocks.
effective url:
It is not a bug. I will improve debug logging.
@develar full log from bootup of electron app: https://gist.github.com/mastergberry/e57845bc39c841738096f116614ba049
(Ignore the node file being out of date, i have newer ones that I haven't installed yet since I am just testing the updater).
@mastergberry Let's use slack https://slackin.electron.build
Hi @develar, @mastergberry ,
Have been trying to get the delta update working. Feel I am missing something simple. I update electron-builder and electron-updater to the latest versions.
Under package.json, where do I put the isUpdated = true? Under publish? Or nsis?
Thanks in advance,
Arun
Please ignore my previous message. Somehow missed @develar 's message that the differential updater was not out yet.
Differential updater only works for the web version atm @Bioswami-nfac
@mastergberry is it really working? I have ~500mb app published to s3, started with v0.0.1 installed, all good. Then changed only some 1-2 files and published v0.0.2 and it still publish 7z file of ~500mb and needs to download whole thing while updating. Is "target": "nsis-web" and "differentialPackage": true all I need?
@kukiel you can see my exact package.json settings below
"nsis": {
"oneClick": false,
"perMachine": true,
"allowElevation": true,
"allowToChangeInstallationDirectory": true,
"runAfterFinish": false,
"include": "build/badlion.nsh",
"unicode": true,
"differentialPackage": true
},
"publish": {
"provider": "generic",
"url": "{Put Your URL Here}",
"channel": "latest"
}
.....
"scripts": {
"dist": "build --win nsis-web --x64 --ia32",
...
}
It is normal to have to re-upload the whole file, because you need to account for the new people getting the app for the first time. It should not be re-downloading the whole thing unless something went wrong though.
I'm not sure how the target flag works....i'm one of the first people that switched to nsis-web so maybe there is a new config way of doing this. My config is kinda old and has the bare minimum from back then.
Make sure you upload both the latest.yml and the 7z files...or it won't work. If still having issues you might wanna paste your log.log found in ur AppData folder so it can be looked at for any errors.
Also make sure that you are on the latest electron-updater (2.19.0) and electron-builder (19.53.6) @kukiel
@mastergberry @develar Hi sorry to bother you guys, but I've tried to run this for the last 6 hours without success, and now I'm pleading for help. It is probably something really stupid that I'm missing.
I'm using
electron: 1.7.10
electron-builder: 19.54.0
electron-updater: 2.20.0
this is my build config file
"build": {
"appId": "com.appId",
"win": {
"target": "nsis-web"
},
"files": [
"**/*"
],
"nsis": {
"artifactName": "${productName}-Setup-${version}.${ext}",
"oneClick": false,
"perMachine": true,
"allowToChangeInstallationDirectory": true,
"runAfterFinish": true,
"deleteAppDataOnUninstall": true,
"differentialPackage": true
},
"publish": {
"provider": "generic",
"useMultipleRangeRequest": false,
"url": "https://s3-eu-west-1.amazonaws.com/bucket-name/electron/testrelease",
"channel": "latest"
}
}
And then the build command as a simple build --win
So to test this:
1) I build and install a test version 0.0.1.
2) Then I upload
- latest.yml
- Setup-0.0.1.exe
- 0.0.1-x64.nsis.7z
to the specified bucket on S3.
3) I update the version to 0.0.2 and build that
4) Then I upload
- latest.yml
- Setup-0.0.2.exe
- 0.0.2-x64.nsis.7z
to the specified bucket on S3.
5) I launch the installed version (0.0.1) on my machine, it finds the update, but it downloads the full installer, not the delta.
Here is the content of the log file:
2018-01-22 14:34:28:0846 update-available { version: '0.0.2',
files:
[ { url: 'Setup-0.0.2.exe',
sha512: '38Rj+o5E15lOFBBXLIQYuTKpaewFp/GBE6rpNWembWT73MDAnwRO43vWwLP5w3FDNdP16a8H8rKAl8gDXYU1dA==' } ],
path: 'Setup-0.0.2.exe',
sha512: '38Rj+o5E15lOFBBXLIQYuTKpaewFp/GBE6rpNWembWT73MDAnwRO43vWwLP5w3FDNdP16a8H8rKAl8gDXYU1dA==',
packages:
{ x64:
{ size: 39968290,
sha512: 'ynwjjtXewnvZOHNoeUhWz2YaKvR/iqomzudcfQB/SuZ/91YBI4Xl1sOd9WQTfsRdhGBaOpn9fASrQVZK8C9qoA==',
blockMapSize: 43405,
path: '0.0.2-x64.nsis.7z' } },
sha2: 'd64f76a348d3b7877a1ca90b6dbf4e3c6cc580cc91b0a13943fa68b5c8a39a97',
releaseDate: '2018-01-22T14:32:53.352Z' }
2018-01-22 14:34:29:0237 Update download in progress: { total: 866530,
delta: 866530,
transferred: 866530,
percent: 100,
bytesPerSecond: 3687362 }
2018-01-22 14:34:29:0541 Cannot download differentially, fallback to full download: Error: Content-Type "multipart/byteranges" is expected, but got "application/x-7z-compressed"
at ClientRequest.differentialDownloader.httpExecutor.doRequest.response (C:\Program Files\APP\resources\app.asar\node_modules\electron-updater\src\differentialDownloader\multipleRangeDownloader.ts:89:14)
at emitOne (events.js:96:13)
at ClientRequest.emit (events.js:191:7)
at URLRequest.ClientRequest.urlRequest.on (C:\Program Files\APP\resources\electron.asar\browser\api\net.js:207:12)
at emitOne (events.js:96:13)
at URLRequest.emit (events.js:191:7)
From previous event:
at C:\Program Files\APP\resources\app.asar\node_modules\electron-updater\src\differentialDownloader\DifferentialDownloader.ts:86:5
at Generator.next (<anonymous>)
at C:\Program Files\APP\resources\app.asar\node_modules\graceful-fs\graceful-fs.js:241:16
at FSReqWrap.oncomplete (fs.js:114:15)
From previous event:
at FileWithEmbeddedBlockMapDifferentialDownloader.downloadFile (C:\Program Files\APP\resources\app.asar\node_modules\electron-updater\out\differentialDownloader\DifferentialDownloader.js:205:11)
at FileWithEmbeddedBlockMapDifferentialDownloader.doDownload (C:\Program Files\APP\resources\app.asar\node_modules\electron-updater\src\differentialDownloader\DifferentialDownloader.ts:79:17)
at C:\Program Files\APP\resources\app.asar\node_modules\electron-updater\src\differentialDownloader\FileWithEmbeddedBlockMapDifferentialDownloader.ts:11:16
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\APP\resources\app.asar\node_modules\electron-updater\out\differentialDownloader\FileWithEmbeddedBlockMapDifferentialDownloader.js:37:11)
at C:\Program Files\APP\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\APP\resources\app.asar\node_modules\electron-updater\out\NsisUpdater.js:232:11)
at C:\Program Files\APP\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\APP\resources\app.asar\node_modules\electron-updater\out\NsisUpdater.js:118:33
at C:\Program Files\APP\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\APP\resources\app.asar\node_modules\electron-updater\out\BaseUpdater.js:98:11)
at C:\Program Files\APP\resources\app.asar\node_modules\electron-updater\src\NsisUpdater.ts:37:16
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.doDownloadUpdate (C:\Program Files\APP\resources\app.asar\node_modules\electron-updater\out\NsisUpdater.js:125:11)
at C:\Program Files\APP\resources\app.asar\node_modules\electron-updater\src\AppUpdater.ts:340:25
at Generator.next (<anonymous>)
From previous event:
at NsisUpdater.downloadUpdate (C:\Program Files\APP\resources\app.asar\node_modules\electron-updater\out\AppUpdater.js:382:11)
at NsisUpdater.autoUpdater.on (C:\Program Files\APP\resources\app.asar\components\update\update-service.js:39:19)
at emitOne (events.js:96:13)
at NsisUpdater.emit (events.js:191:7)
at NsisUpdater.onUpdateAvailable (C:\Program Files\APP\resources\app.asar\node_modules\electron-updater\src\AppUpdater.ts:322:10)
at C:\Program Files\APP\resources\app.asar\node_modules\electron-updater\src\AppUpdater.ts:308:10
From previous event:
at NsisUpdater.doCheckForUpdates (C:\Program Files\APP\resources\app.asar\node_modules\electron-updater\out\AppUpdater.js:353:11)
at C:\Program Files\APP\resources\app.asar\node_modules\electron-updater\src\AppUpdater.ts:264: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\APP\resources\app.asar\node_modules\electron-updater\out\AppUpdater.js:307:11)
at NsisUpdater.checkForUpdates (C:\Program Files\APP\resources\app.asar\node_modules\electron-updater\src\AppUpdater.ts:213:35)
at Object.checkForUpdates (C:\Program Files\APP\resources\app.asar\components\update\update-service.js:105:17)
at BrowserWindow.<anonymous> (C:\Program Files\APP\resources\app.asar\main.js:177:21)
at Object.onceWrapper (events.js:293:19)
at emitOne (events.js:101:20)
at BrowserWindow.emit (events.js:191:7)
The error is Cannot download differentially, fallback to full download: Error: Content-Type "multipart/byteranges" is expected, but got "application/x-7z-compressed"
Is there something that I'm missing? Am I doing something wrong?
Also, any update on enabling the differentialPackage also for the plain nsis
builder?
Thank you so much for your work!
@ejrcavenago If you do curl -I {webpath to 7z file here}
do you see this flag?
Accept-Ranges: bytes
Yes
...
Accept-Ranges: bytes
Content-Type: application/x-7z-compressed
Server: AmazonS3
...
@develar I haven't a clue what's wrong with his config. Maybe there is something weird being done in the installer/updater for if you are just doing a single platform vs both (x86 + x64) platforms?
This works as expected when bundled for Windows (x86 + x64).
I think that I found the problem in my code! I was explicitly setting the feed URL due to a legacy code, then I read this
Do not call setFeedURL. electron-builder automatically creates app-update.yml file for you on build in the resources (this file is internal, you don't need to be aware of it).
in the updater documentation.
Now the delta seems to work fine!
2018-01-23 10:09:27:0687 update-available { version: '0.0.3',
files:
[ { url: 'APP-Setup-0.0.3.exe',
sha512: 'Kvl/1jcXsuhPRjPHkdeA/NgQct4QrDj61Hkl7nofcxY3zLU6yQuNj8+Vr7g+qq1Z+13HoTWPWbpehYzvp6nQEw==',
size: 40775278 } ],
path: 'APP-Setup-0.0.3.exe',
sha512: 'Kvl/1jcXsuhPRjPHkdeA/NgQct4QrDj61Hkl7nofcxY3zLU6yQuNj8+Vr7g+qq1Z+13HoTWPWbpehYzvp6nQEw==',
sha2: '21dd732eaf9b5a580e0184da85644b6f8129a63344f03a32b96d7965fe83fd56',
releaseDate: '2018-01-23T10:07:53.786Z' }
2018-01-23 10:09:28:0758 Update download in progress: { total: 40775278,
delta: 29299022,
transferred: 29299022,
percent: 71.8548675498914,
bytesPerSecond: 29299022 }
2018-01-23 10:09:28:0960 Update download in progress: { total: 40775278,
delta: 11476256,
transferred: 40775278,
percent: 100,
bytesPerSecond: 33922860 }
2018-01-23 10:09:28:0999 update-downloaded { version: '0.0.3',
files:
[ { url: 'APP-Setup-0.0.3.exe',
sha512: 'Kvl/1jcXsuhPRjPHkdeA/NgQct4QrDj61Hkl7nofcxY3zLU6yQuNj8+Vr7g+qq1Z+13HoTWPWbpehYzvp6nQEw==',
size: 40775278 } ],
path: 'APP-Setup-0.0.3.exe',
sha512: 'Kvl/1jcXsuhPRjPHkdeA/NgQct4QrDj61Hkl7nofcxY3zLU6yQuNj8+Vr7g+qq1Z+13HoTWPWbpehYzvp6nQEw==',
sha2: '21dd732eaf9b5a580e0184da85644b6f8129a63344f03a32b96d7965fe83fd56',
releaseDate: '2018-01-23T10:07:53.786Z' }
Thank you
@mastergberry @develar sorry to open this again.
So I don't have any error now, but still the full installer is opened to update to version 0.0.2
Shouldn't the delta updates be invisible for the users? Or at least not trigger the same installer?
Currently every time that I release an update the user needs to pass the whole "do you want to allow this app to make changes" and "Select folder" etc etc.
Is there any way to avoid that? To ask that only on first installation and just update after that moment?
Am I missing something here?
I think this is just how the system works...most users will not tamper or change this stuff anyways. This is how regular updates work too (not differential).
This would probably go in a separate ticket for a feature for delta updates.
Uhm, so, what is the difference then? Is it just the way to download them?
@mastergberry @develar Hi , when will this be stable and production ready. Also is there any red flags before I use this feature in production software.
@develar Any word on the differential updater? I'd really love to have this built in before I roll out my next version to clients :)
Differential updater (delta updates) for Windows Web Installer (nsis-web
target) is ready to use in production.
https://github.com/electron-userland/electron-builder/issues/2217 is still not yet completed. Reason — it is not a feature where I want to rush (no second chance to fix some issues since it is electron-updater — not electron-builder where we can simply say "sorry, it is fixed in the latest electron-builder version"). When differential updater for nsis target will be ready — due to Snapcraft summit and requests from Canonical, work was postponed for 2 weeks. I expect that this feature will be finished this month.
Thanks. Am waiting for the NSIS target :) Really looking forward to it!
Regards,
Arun
On Thu, Feb 8, 2018 at 2:32 PM, Vladimir Krivosheev <
[email protected]> wrote:
Differential updater (delta updates) for Windows Web Installer (nsis-web
target) is ready to use in production.2217 https://github.com/electron-userland/electron-builder/issues/2217
is still not yet completed. Reason — it is not a feature where I want to
rush (no second chance to fix some issues since it is electron-updater —
not electron-builder where we can simply say "sorry, it is fixed in the
latest electron-builder version"). When differential updater for nsis
target will be ready — due to Snapcraft summit and requests from Canonical,
work was postponed for 2 weeks. I expect that this feature will be finished
this month.—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/electron-userland/electron-builder/issues/1523#issuecomment-364045900,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AJvnps9KkeXzGeg2n4AAHBt2v0ygKU-Zks5tSrghgaJpZM4NOD9-
.
--
Arun Krishnan, Ph.D
Founder & CEO,
nFactorial Analytical Sciences,
Email: [email protected]
Phone: +91 9880007615
URL: http://www.nfactorialanalytics.com
n!Gage, n!Factorial’s real-time employee engagement feedback platform
http://bit.ly/Intro2nGage, helps managers listen, understand and act upon
employee feedback that leads to great employee experiences and ultimately,
deeper engagement. This first-of-its-kind-in-India-platform uses analytics
to provide real-time intervention analysis, trends, predictive analysis and
much more. Winner of TechHR’s 2016 Spotlight award
https://www.peoplematters.in/article/hr-technology/spotlight-award-winners-2016-13817,
the platform is in use in several large corporations across multiple
industries.
@develar Thanks for the info. I have also used it within these few days and it is working good enough for my use cases. Updater is working perfectly till now. I used nsis-web since my app size is approximately 100MB. Thanks for this. 👍
Hi @develar ,
This is my periodic check on the status of the NSIS updater (not the we updater). Really looking forward to this to roll it out to my clients.
Thanks,
Arun
Hi, I have the same problem as @ejrcavenago and get this error:
Cannot download differentially, fallback to full download: Error: Content-Type "multipart/byteranges" is expect
Here is my config:
"win": {
"icon": "build/icon.ico",
"target": "nsis-web"
},
"nsisWeb": {
"installerIcon": "build/icon.ico",
"differentialPackage": true,
"artifactName": "${productName}Setup${version}.${ext}"
},
But I don't think had set any FeedURL or something in my app :(
Hello @develar, Thank you for this awesome feature; it help me a lot but i faced one problem, from above conversation i just realized that nsis-web installer install only the part of modified one so if i changed my one file (maybe 1 or 2 line for testing purpose) so it download according that area.
But whenever i changed something or not changed single line then also it download some 20+ mb size. may i miss something ?
i attach my package.json and some logs that may help to identify what i miss.
HI Nikunj,
Nope. Right now it doesn't do incremental/delta updates. It will update the
whole application.
Regards,
Arun
On Mon, Jun 25, 2018 at 5:53 PM, Nikunj Chotaliya notifications@github.com
wrote:
Hello @develar https://github.com/develar, Thank you for this awesome
feature; it help me a lot but i faced one problem, from above conversation
i just realized that nsis-web installer install only the part of modified
one so if i changed my one file (maybe 1 or 2 line for testing purpose) so
it download according that area.But whenever i changed something or not changed single line then also it
download some 20+ mb size. may i miss something ?i attach my package.json and some logs that may help to identify what i
miss.[image: selection_004]
https://user-images.githubusercontent.com/24936878/41849954-7e9f8900-78a0-11e8-8cb6-ed6f5e2dacb5.png[image: screenshot_1]
https://user-images.githubusercontent.com/24936878/41849967-8c973ad0-78a0-11e8-9d58-04b15db88a3d.png—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/electron-userland/electron-builder/issues/1523#issuecomment-399932852,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AJvnpjedbf6GcQPkii0DtrYFRCcJjunhks5uANZHgaJpZM4NOD9-
.
--
Arun Krishnan, Ph.D
Founder & CEO,
nFactorial Analytical Sciences,
Email: [email protected]
Phone: +91 9880007615
URL: https://www.nfactorialanalytics.com
http://www.nfactorialanalytics.com
Short Product Video: http://bit.ly/Intro2nGage
n!Gage, n!Factorial’s real-time employee engagement feedback platform
http://bit.ly/Intro2nGage, helps managers listen, understand and act upon
employee feedback that leads to great employee experiences and ultimately,
deeper engagement. This first-of-its-kind-in-India-platform uses analytics
to provide real-time intervention analysis, trends, predictive analysis and
much more. Winner of TechHR’s 2016 Spotlight award
https://www.peoplematters.in/article/hr-technology/spotlight-award-winners-2016-13817,
the platform is in use in several large corporations across multiple
industries.
Thank you @arun-nfactorial for reply, my concern is that does it download whole application if i changed some line of code.
Because right now if i changed some small thing or even not changed anything then also it download 20+ MB; which should not happen i guess.
From @develar comment above, if i changed something then it download only that part of area (let's say 2 MB for 1 file changed i guess); after downloaded if it update whole application then it is fine.
@NikunjChotaliya instead of nsis use nsisWeb. Then it will download delta update
"win": {
"target": "nsis-web",
},
"nsisWeb": {
"artifactName": "${productName}-Setup-${version}.exe",
"differentialPackage": true
}
Yes. it will unfortunately.
On 25-Jun-2018 18:38, "Nikunj Chotaliya" notifications@github.com wrote:
Thank you @arun-nfactorial https://github.com/arun-nfactorial for reply,
my concern is that does it download whole application if i changed some
line of code.
Because right now if i changed some small thing or even not changed
anything then also it download 20+ MB; which should not happen i guess.
From @develar https://github.com/develar comment above, if i changed
something then it download only that part of area (let's say 2 MB for 1
file changed i guess); after downloaded if it update whole application then
it is fine.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/electron-userland/electron-builder/issues/1523#issuecomment-399945428,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AJvnpu5VsBWyJ6xwOHIuUs3Lc4_1Qtg-ks5uAOC4gaJpZM4NOD9-
.
Hello @madhuinwiter, i did what you suggest but still it download 20+ MB if i didn't changed anything.
Is it possible that; this happen because i used some native packages with my application; like (sqlite3 etc.)
@NikunjChotaliya did you ever figure this out? I'm seeing mine download about 70+ mb, even without any changes to source files. Using nsis..haven't tried nsis web.
Most helpful comment
@arun-nfactorial Please see #2217 This feature is donated by @BethanyBerkowitz It will be a Christmas present :), so, will be enabled by 25 December (99% finished, need to polish and do some integration tests)..