Vector35 / binaryninja-api

Public API, examples, documentation and issues for Binary Ninja
https://binary.ninja/
MIT License
926 stars 209 forks source link

ability to limit upgrades when new version will be OS incompatible #3324

Open bmuessig opened 2 years ago

bmuessig commented 2 years ago

Version and Platform (required):

Bug Description:

---------------------------
binaryninja
---------------------------
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

Available platform plugins are: windows.

---------------------------
OK   
---------------------------

Steps To Reproduce: Updated Binary Ninja and then started it.

Expected Behavior: It should start and not crash on launch.

Additional Information: Before the update, it worked just fine.

bmuessig commented 2 years ago

I would like to add that I have reinstalled Binary Ninja without effect.

psifertex commented 2 years ago

Can you try the steps in this document to see if it's a plugin causing this problem? It's quite likely that it's caused by an old version of the binexport plugin.

https://docs.binary.ninja/guide/troubleshooting.html#troubleshooting-plugins

(related binexport issue: https://github.com/google/binexport/issues/93)

psifertex commented 2 years ago

Sorry, ignore me, I mis-read your original comment. QT failing to load is probably not binexport.

psifertex commented 2 years ago

Unfortunately this is due to the decency requirements for new versions of QT. You'll notice that 8.1 is no longer supported: https://doc.qt.io/qt-6/supported-platforms.html

and in fact, hasn't been supported officially for BN itself for some time: https://binary.ninja/faq/#supported-platforms it just happened to work longer than it was officially supported

bmuessig commented 2 years ago

Could you please provide a download that still works? I can neither downgrade to it, nor download a version that still supports it.

psifertex commented 2 years ago

Unfortunately we don't have old installers available. The easiest way to get a version that old is to install a copy on a newer version of windows elsewhere, then use the UI to downgrade to a previous version and copy the file structure back over.

The biggest issue this points out is that we should have the ability to disable updates to a version that will be incompatible. In fact, even if you get the old version installed you have to disable updates or it will try to update to the incompatible version. I'm going to re-open this issue and re-name it to track that issue.

Note though that with the current updater infrastructure it's actually quite difficult to do this so it necessitates some new design to the way updates work.

bmuessig commented 2 years ago

Thanks for converting the issue. Having the updater respect OS compatibility borders is great. I think this would become particularily useful for macOS too with its yearly updates.

psifertex commented 2 years ago

MacOS tends to be less of a big deal though since we usually support the last 2-3 major releases at least and mac users tend to update more frequently than other OS's in my experience.

bmuessig commented 2 years ago

Indeed, I just thought that if you keep 2-3 major releases supported, with every new release, one would be pushed out of the 'queue' of supported operating systems.