I am using App Wrapper Mini and dealing with a strange issue:
After Codesigning and creating a .PKG Installer I installed my app on a Mac sucessfully.
It runs as axpected except to the point where I am checking App.NonReleaseVersion to check if there is a software update available. But the result of App.NonReleaseVersion is always 0 (=zero). I am not using Sandboxing.
I am missing something?
Unless I am drastically mistaken (and yes that did happen once )
Those values are what YOU set them to when you compile the application…
NonReleaseVersion will auto increment each time you compile the program IF you have the switch set to do so.
But how are you going to use that to determine if a new version is available?
If I am running your app… it will see the value of NonReleaseVersion that was set for the version I have… not for a newer version
Not even sure why it is called NonReleaseVersion… it is in reality a BUILD counter.
Tomas - The issue is an App Wrapper one. In order to get the number you want, the number which appears beside .NonReleaseVersion in your “Shared” setting, you need to get app.MajorVersion from your Wrapped app. Sam explained it to me when I asked about the same issue. I didn’t understand the issue but, all I know is that app.MajorVersion will give you the number you are looking for.
Thank you for your quick Response and question Dave. Let me briefly explain why and how I am using App.NonReleaseVersion and where exactly I am running into problems:
It is the same autoincrement feature you mentioned that I am using to determine which Build is out there. On my web server there is a short XML file where I put the latest release, for instance 1300. If an earlier app with build 1290 checks the XML and is below this number (app.NonReleaseVersion < 1300) it will trigger a dialog to update the software. This routine runs pretty well in compiled versions. It also runs pretty well when using code signed DMG archives for distribution. But somehow it won’t run in Apples PKG Installer files when using App Wrapper Mini. The returned value app.NonReleaseVersion in my program is always zero.
@Roger: oh we wrote at the same time. I will check this out.
In App Wrapper Mini, change the “Version” popup menu. It offers you several options, but you will lose the nonReleaseversion if you are submitting to the Mac App Store.
The root of the problem is that Xojo and Apple disagree on how the version number information should be written to the application plist file. Which is fine, unless you’re submitting to the Mac App Store, where you have to submit following Apple’s guidelines, which of course breaks several Xojo version number constants.
In the App Wrapper Mini version number popover, it does explain which version number constants get altered and what their values will be.
Right - they are read from the plist not baked into the exe
Here’s the feedback report on the situation <https://xojo.com/issue/15507>
Thank you for your kind support Sam. What do you think? Is this issue useable as indicator if an app is used (and updated) within MAS? Of course only if set to hybrid mode within App Wrapper. If so I could keep my “classic” update mechanism for software outside MAS and simply turn it off when my software used inside MAS.
I use APWM and have used Hybrid format for all the apps I have in the App Store.
Just two thoughts :
- You could set a constant in you app that replaces the non-release version
- Why not employ the release version instead of the non release version ? I systematically increase the bug version when I build new, so I could use that to prompt user for a new version.
In the MAS, though, the update being carried out by the App Store app, I did not implement such a scheme. True, my apps probably do not need a fresh date, as they are mostly rather stable and do not have such a frequent version turnover.
Ahh… Well here-in lies the devil, i.e. Your own update system will get your application rejected. MAS has it’s own update system and Apple won’t allow you to use your own.
Ja that is exactly the reason to find such an Indikator.
IF WithinMAS then DoNotUpdate else DoUpdate