Tips for Standalone distribution?

    Sep 10 2014 | 8:21 am
    I have an app thats ready for distribution. I've found some older documents on the subject, such as the "making a slick standalone," that proved useful but wasn't sure if there was anything that might be different now that it isnt listed in that doc.
    1) The Max window could be hidden in the properties of the STANDALONE object and editing the JSON file. Does that disable the keyboard shortcut to open the max window?
    2) I use some PATTR objects to recal informantion for MESSAGE objects that eventually passes to a THISPATCHER object... Should I be concerned that the user could edit the JSON or XML pattr preset files to be "script" or "thispatcher" messages that could potentially compromise my app or the code?
    3) For Copyright protection I found ExcelSoftware to have some good options but in terms of online activation their monthly plans will eventually eat away at income. Are there any solutions to have online activation within Max MSP? MAXURL or JAVA object... with this it may be possible to make in-app purchases?
    4) Is there something similar to OVERDRIVE option (Standalone Object property for audio) but for graphics? My max patch is quite large and my TIMECODE display from the TRANSPORT object does not render smaller units frequently enough. Miliseconds & Units just in increments of 5 hundred. Even when taken straight out of help file. Ideas?
    Any tips for safe & protected standalone distribution appreciated. I hope Cycling 74' takes the step to deliver dependable documentation for this in the future.

    • Feb 10 2015 | 3:51 pm
      For your TIMECODE display i'd suggest setting some scheduler preferences. Try setting eventinterval to 1 in max preferences. if that helps, include it in your patch when the patch launches. I've got a loadbang attached to a message box with this content in a few of my patches that are going to be standalones:
      max preempt 1;
      max seteventinterval 1;
      max setpollthrottle 1000;
      max setqueuethrottle 1000;
      max refreshrate 33.;
    • Feb 10 2015 | 4:25 pm
      1) If you remove references to the 'maxwindow' in maxinterface.json you can't use the shortcut to show the max window.
      2) As always, the line on this one is that if you really want to protect your stuff, include the stuff you want to protect in to an external object.
      3) I think Livid do have online authorisation from within Max, it's definitely doable. For ref Excel allows manual authorisation (which most users don't mind if you're a small company/single developer).
      You can obfuscate the patch by moving the objects around using a script. I wrote one in python recently and it made me feel special. If you do it well enough it would require a bit of effort to reverse, especially if you have a big patch.
      In fact, I've been wondering recently about third party objects / js / java code, and how vulnerable these are in an app? I know you can see JS code but it seems to be in one long list, and could be pretty confusing when trying to reassemble it.
      Through my paranoia I've started to remind myself that most software gets cracked anyway, and the people that would pay for it generally will do. Maybe cracked versions of things are like a kind of free publicity?