If you really want to offer perpetual licenses with paid updates, since you're a desktop app, you can roll your own licensing system and use FastSpring/Paddle/etc. It's a fair model, but it's a lot of work. It may be worth it depending on your audience - e.g. developers tend to care a lot about this stuff.
Selling this as a subscription is probably the best path if you can stomach the initial ire of users that don't like that model. Depending on your price point, you could consider a 4x-5x multiplier for a lifetime option if you want to try and keep some of them. Yes, you will lose some users that might have paid for a major version, but you'll probably make that up with the recurring revenue from less price-sensitive users.
Best of luck. I know this can be agonizing and there's no easy answer here.