nuttyartist / notes

Fast and beautiful note-taking app written in C++. Write down your thoughts.
https://notes-foss.com
Mozilla Public License 2.0
3.73k stars 328 forks source link

Truly unified WIndows installer #438

Closed guihkx closed 1 year ago

guihkx commented 1 year ago

Right now we have a separate Windows installer for the Qt 6 build (which is x64-only), but we should probably just include the Qt 6 build with the Qt 5 ones (they're x86 and x64), and then maybe just install the Qt 6 build by default (if supported by the OS).

Possible improvements to the installer:

Some things to keep in mind:

Feel free to post any suggestion you might have...

nuttyartist commented 1 year ago

Very good issue! I thought about opening something like that.

I agree with all the points. So we want to end up with Qt6 for 64bit Windows 10+ and 32bit and 64bit Qt5 for the rest? It might get to 100 MB?

I think we can check with InnoSetup the os version (https://jrsoftware.org/ishelp/index.php?topic=winvernotes). We already check with it whether Windows is 64bit or 32bit.

nuttyartist commented 1 year ago

I thought of maybe simplifying this a bit and trying to detect the os version and bit via JS and then showing the appropriate binary on the website.

bjorn commented 1 year ago

I'm thinking people running Windows older than 10 might not really care whether their Notes is 32-bit or 64-bit, in which case shipping two builds should be enough:

Would help keep the download size a bit more reasonable.

nuttyartist commented 1 year ago

@guihkx What do you think?

Will our app fully utilize os resources if 32bit runs on 64bit? From what I've read, it should work the same. Also, it will be installed on /ProgramFiles (x86) /, I guess?

guihkx commented 1 year ago

It might get to 100 MB?

Probably not that large since we're compressing files with lzma, but I'm guessing it'd be around 50 MB if we added all three builds.

I'm thinking people running Windows older than 10 might not really care whether their Notes is 32-bit or 64-bit

Yeah, I agree with that...

Will our app fully utilize os resources if 32bit runs on 64bit?

Performance-wise and technically speaking, there could be a small performance penalty, but I really doubt it'd be something noticeable. Functionality-wise, I don't think we'd have any problems.

Also, it will be installed on /ProgramFiles (x86) /, I guess?

It depends. On 32-bit installations of Windows (from 7 through 10), the folder would be Program Files.

But on 64-bit installations of Windows (from 7 through 8.1), the folder would be Program Files (x86) instead.

Thankfully, that's mostly handled by Inno Setup automatically. (edit: not really lol)

Anyway... bundling just the 32-bit Qt 5 build, plus the 64-bit Qt 6 build, the final size of the installer is 34.8 MB.

Not bad, right?!

nuttyartist commented 1 year ago

@guihkx 34.8 MB is pretty good. Considering the current installer is 56MB. Delivering three different versions should not be a problem if the final artifact is around 50MB. It's still pretty small nowadays.

guihkx commented 1 year ago

The final size of the installer with all three builds is 54 MB:

https://github.com/guihkx/notes/actions/runs/3884677505

I'm currently testing on a separate branch from #439, but if you decide to go with all three builds, let me know and I can merge those changes there.

One small visual bug this change introduced, however, is that now the installer can't compute the real disk space required for the files:

bug

Which is weird, because all files are still installed correctly (at least on my tests)...

From what I can tell, this looks like a bug in Inno Setup itself. The only thing I could find on Google about this, are these two posts of people having a similar problem:

A possible workaround would be adding the ExtraDiskSpaceRequired option to [Setup] and set it to something like 70 MB.

nuttyartist commented 1 year ago

Hmm that's a weird one. Let's merge #439. It should be good for now.