0

I have a quite complicated build process involving different directories (for plugins) ; currently using NSIS on Windows and PackageMaker on OSX but have issues improving them as my install / uninstall process is getting more complex with time.

The more I look into it, the more I feel like I should code my own cross platform installer with a cross platform GUI like wxWidgets (I've used it before) and copy myself the right files in the right directories because I cannot find any good cross platform software installer OR even programmatically customizable software installers for both platforms.

Has anyone gone down that path ? Does anyone know what are the hardest things to achieve, blocking everyone to produce good softwares installers and why doesn't this exists right now ?

Thanks in advance!

ttoinou
  • 13
  • 3
  • [Maybe have a quick read](https://stackoverflow.com/a/51624645/129130). – Stein Åsmul Apr 16 '19 at 12:45
  • Thanks! I do not want a bloaty Java based installer, nor do I automatic deployment (I want an UI to enable/disable some components, detect old versions, show changelog etc..). The other softwares don't seem programmatically customizable at all, or very very expensive – ttoinou Apr 16 '19 at 13:47

1 Answers1

0

Does anyone know what are the hardest things to achieve

The hard part about installers is not wizard GUI, it’s OS integration. That integration is dramatically different across OSes.

On Windows, you need to use MSI. NSIS doesn’t do particularly good job, MSI enables repair/modify functionality, by default MSI can upgrade stuff even when old version is still running (and it continues running while being replaced), some MS libraries ship as *.MSM merge modules… BTW, I usually use WIX for that.

Similarly, on Debian and Ubuntu Linux you need to create .deb packages. Even if you’re making a GUI installer. They also support repair & upgrades, versioning, dependencies, but they do it in completely different way than MSI.

I don’t have much experience with OSX but I think it has some other installer infrastructure implemented by the OS.

Soonts
  • 20,079
  • 9
  • 57
  • 130
  • Thanks for the answer, but what's the risk if I don't do any integration with the OS (apart from registering an uninstaller in Windows list of installed apps) ? I only copy files I need myself – ttoinou Apr 16 '19 at 16:18
  • If your app doesn’t use any external components like .NET framework, or VC++ runtime DLLs, NSIS is probably OK. I have used it as well. With MSI it’s easier to manage these dependencies, easier to do unattended installs, also upgrading works better. – Soonts Apr 16 '19 at 17:56
  • Yes I'd like to package VC++2017Redist but if it's a separate .exe I ask users to launch then it's not the end of the world – ttoinou Apr 17 '19 at 09:05
  • It's not, but with MSM merge module for VCRedist the user experience is better. It installs automatically by the main installer, single progress bar, rollback on errors. Also dependency is set, users will get warning when trying to uninstall VCRedist, saying that it's used by your app. – Soonts Apr 17 '19 at 12:36
  • Thanks for the info! – ttoinou Apr 17 '19 at 18:25
  • I could probably do it on my own : https://blogs.msdn.microsoft.com/astebner/2010/10/20/mailbag-how-to-perform-a-silent-install-of-the-visual-c-2010-redistributable-packages/ – ttoinou Apr 18 '19 at 08:38