Author Topic: Tools for deployment. Reccomendations  (Read 18719 times)

0 Members and 1 Guest are viewing this topic.

Atook

  • Swamp Rat
  • Posts: 1027
  • AKA Tim
Tools for deployment. Reccomendations
« on: December 11, 2015, 02:56:09 PM »
Today I'm looking at bigger picture; the one beyond LockedTransactions and ObjectIDs.

I'm hoping to sell the app I'm working on, which will mean I need to come up with an installer package. Any tools you like to use for that?

Also, I'm hoping to use a subscription model, are there any libraries or services you use and like that handle the licensing of your apps?

MickD

  • King Gator
  • Posts: 3619
  • (x-in)->[process]->(y-out) ... simples!
Re: Tools for deployment. Reccomendations
« Reply #1 on: December 11, 2015, 05:43:30 PM »
For VS2013 Community Edition I think you can download the installer package for free, I've been using InnoScript for a couple of years and it's pretty easy to use and quite powerful in the right hands.

For licensing, I'm using Infralution http://www.infralution.com/licensing.html
It works well, but I might look into building my own licensing server to allow for users to subscribe on a month by month basis making the terms more flexible. I will just have my app ping the server to check credentials every week or so for updates and license check.
They also have a server version, but it is a Windows stack whereas I'm using a Linux server which I'm more familiar with (but that might change).

It really depends on how much you want to lock up your code, most people are pretty honest and you just need to lock things up enough to encourage them to pay to use the app. Being a .net app, even with obfuscation it is not that hard to crack but again, those who want to do that are the minority and they have to live with themselves :)

Once I get my app sorted I will most likely open source it as people are still willing to pay if your fees are reasonable otherwise they need to build it themselves which for most is outside their business model anyway. Being open source can only help the quality of the application as well.
"Short cuts make long delays,' argued Pippin.”
J.R.R. Tolkien

CADbloke

  • Bull Frog
  • Posts: 342
  • Crash Test Dummy
Re: Tools for deployment. Reccomendations
« Reply #2 on: December 12, 2015, 07:41:39 AM »
I'm going to be doing this in a month or few too with www.tvCAD.tv. I am leaning towards http://wixtoolset.org/ to build the installer and http://www.ssware.com/cryptolicensing/cryptolicensing_net.htm for licensing. I also looked at http://wyday.com/limelm/ for licensing. They have an interesting articla at http://wyday.com/limelm/features/why/

Crypto do an obfuscator too. http://www.ssware.com/cryptoobfuscator/obfuscator-net.htm - so does Infralution.

There's also https://github.com/dnauck/Portable.Licensing if you're interested in an open-source solution

With things around like https://github.com/0xd4d/de4dot then you know that it's going to get cracked if some %^$^ really wants to crack it. If you have a market in those countries where IP is not respected especially well then it may be worth your while making it hard for them but offering great support and regular, valuable updates will put you ahead of the flea-markets. You probably don't want those customers anyway. I'm still contemplating obfuscation for my as-yet unreleased apps. It may be more trouble than it is worth.

Services like http://www.fastspring.com/ cost a bit more than Stripe, PayPal etc but they also automate a lot more of the business side of selling and collecting your dosh.

Mick has done a lot more of this than me, FYI.

See also http://www.theswamp.org/index.php?topic=47633.0 & (if you have all day) http://www.theswamp.org/index.php?topic=41844.0

BlackBox

  • King Gator
  • Posts: 3770
Re: Tools for deployment. Reccomendations
« Reply #3 on: December 12, 2015, 10:24:37 AM »
Consider applying for a free Microsoft BizSpark membership as well.
"How we think determines what we do, and what we do determines what we get."

CADbloke

  • Bull Frog
  • Posts: 342
  • Crash Test Dummy
Re: Tools for deployment. Reccomendations
« Reply #4 on: December 12, 2015, 02:47:12 PM »
Consider applying for a free Microsoft BizSpark membership as well.
Definitely. I did this year's ago and it was a great head-start. You should also try your local Autodesk developer network contact for a free membership for the first year or so.

tetrahidrocannabinol

  • Guest
Re: Tools for deployment. Reccomendations
« Reply #5 on: December 12, 2015, 06:13:17 PM »
Installers:
If you have enough money:
  Caphyon Advanced installer
In another case:
  InnoSetup (This is highly customizable, but you need some minimum knowledge about pascal)

Licensing systems:
CryptoLicencing It's expensive (read carefully the comparison between the different versions)
Another (free/opensource) licensing system based on signed-XML files:
 http://www.hibernatingrhinos.com/oss/rhino-licensing

I have enough experience in these matters for letting me give you some advice:
- You really need that kind of  licensing systems (online activation, track the number of activations...)?
- Have you taken into account the amount of money that you'll have to invest?
- Are there any (real) possibility that someone tries to crack your software?

In any case, everything can be cracked, and even keygened, especially things written in .Net and Java.

Therefore the right questions are:
- Our application will be published or created for a single client?
- Is it a general-purpose app or have a limited distribution?
- How much money can win with our app?
- ...
Having clarified that, we can decide how much to invest (time and money) in the licensing system

MickD

  • King Gator
  • Posts: 3619
  • (x-in)->[process]->(y-out) ... simples!
Re: Tools for deployment. Reccomendations
« Reply #6 on: December 12, 2015, 09:16:15 PM »
Yep, it really depends on your target market as Tetra' said, you can waste a lot of time and money 'trying' to make something secure but there's no point unless your app is high profile like AutoCAD or similar.
It would be quite easy to invest more time and resources than you make off sales, particularly in the early days of your release.

If your app is sure to be popular then I think your pricing model will make the difference between being a major target or just a hobby for crackers. Until recently AutoCAD has been expensive as a one off purchase, particularly for the one man operator. It's a multinational company and high profile, just the sort of software a cracker likes to crack.
Now they have a subscription model and regular updates it makes it a lot harder for crackers to keep up and users are more likely to pay in installments as it's easier on cash flow. Most will pay if your app is productive for them and affordable.

As an aside, the creators of DOOM made most of their money by giving away their app as shareware and you had to buy it to finish the other levels of the game. People thought they were crazy at the time, but it more than worked well for them.
While not free, the subscription model has replaced the shareware model as it's much more affordable to get in and you may be able to incorporate a bit of both to encourage new users.

Remember, a bird in the hand is worth two in the bush ;)

"Short cuts make long delays,' argued Pippin.”
J.R.R. Tolkien

tetrahidrocannabinol

  • Guest
Re: Tools for deployment. Reccomendations
« Reply #7 on: December 12, 2015, 10:24:08 PM »
The subscription model is killing the software industry. This model only benefits large companies.
Please, do not confuse a maintenance contract with the above, they are very different things.


Until recently AutoCAD has been expensive as a one off purchase, particularly for the one man operator. It's a multinational company and high profile, just the sort of software a cracker likes to crack.

You are, partially , wrong.  There are many more reasons why a team of crackers will be interested by a particular soft, such as "cracking" a key based on RSA. If you could see the "Scene releases", you would see that being a multinational is not something that motivates these teams.



tetrahidrocannabinol

  • Guest
Re: Tools for deployment. Reccomendations
« Reply #8 on: December 13, 2015, 12:06:36 AM »
The dark side of the Force

I just find an app created by a user of this forum  has been "cracked" by a team of Russian crackers.
The positive side->That application is now known in many more countries ("free advertising"). It seems that their obfuscator was not too good :whistling: (just a couple of days ago I read a topic in this forum related to these two products)
« Last Edit: December 13, 2015, 12:10:19 AM by tetrahidrocannabinol »

Atook

  • Swamp Rat
  • Posts: 1027
  • AKA Tim
Re: Tools for deployment. Reccomendations
« Reply #9 on: December 13, 2015, 02:23:09 AM »
Thanks for the input guys.

Right now I'm looking at loading my DLL when CAD starts up. Is the best way to execute this to put in a registry key during install? Like this thread indicates: http://www.theswamp.org/index.php?topic=33538.0

Regarding subscription, I'm thinking that's the way to go for now. It'll be a fraction of the cost of the competition, and allow me to keep improving the software if I'm getting revenue. It's a relatively niche market I imagine a few hundred users tops. I think a normal license would saturate the market in a couple years. I'd like to run annual subscriptions. For the first few years I see 3 or 4 updates a year. The SSWare link CADBloke posted looks pretty good.

As far as locking the code down, I'll try and make it somewhat difficult, but if Adobe and Autodesk can't keep ahead of the hackers, there's not much point in putting a lot of effort into it. Better to make it cheaper to buy than the hassle/doubt of getting a cracked copy. If I don't make enough $$ to make it worth my while, I'll stop developing, and just use it internally. :)

I'll certainly look into the free starting on Bizspark, thought I'm not sure what I'd use it for, I've currently got Linux hosting up and running.

I'll post here on any findings I have as I prototype my install/licensing process.

CADbloke

  • Bull Frog
  • Posts: 342
  • Crash Test Dummy
Re: Tools for deployment. Reccomendations
« Reply #10 on: December 13, 2015, 05:26:57 AM »
The subscription model is killing the software industry. This model only benefits large companies.
Please, do not confuse a maintenance contract with the above, they are very different things.
I disagree on both counts but, as with all things, "it depends". My software (tvCAD) is B2B (Business to Business). They want ongoing maintenance. They also tend to have a much easier time finding op-ex than cap-ex, subscription jumps both of those hurdles. tvCAD's pricing is pretty-much the same as AutoCAD's, most of my prospects are far more interested in an annual subscription than an outright purchase. Those that are after an outright purchase, I told them they can have a perpetual license after a 3-year subscription. They are also interested in monthly subscriptions for short-term projects and burst capacity.

As for cracking protection, I'm retreating from the idea of obfuscation. There is plenty on the Internet about the proliferation of cracked versions of Adobe Photoshop actually having a positive contribution to its revenue because the users were well-accustomed to the app and would pay for it when they could afford it or when a business bought it for them. As an aside, Adobe's revenue is also doing well after they forced subscription on all their customers but I digress.

Back to crackers, they were never going to pay anyway. There's a discussion and links at http://www.theswamp.org/index.php?topic=46325.0 and http://stackoverflow.com/questions/2525/net-obfuscation-tools-strategy. Perhaps reverse-engineering is a problem you anticipate but my feeling is that if reverse-engineering your product provides more value than paying for it then there's a message there. Also, obfuscation adds an area where your app could have problems, that area is a black hole and that worries me. Ultimately the value of obfuscation depends a lot on what you're doing and what you want, who your market is, what resources you have, your evaluation of the risk and extra effort (obfuscated stack-traces anyone?). Are you better off using the time to offer better support, write more tests, add more features, focus on sales, drink more beer? Your time is a finite asset.

from http://wyday.com/limelm/features/why/ (it's worth reading)
Quote
The point of licensing isn't to stop crackers from cracking your software. The point of licensing is to increase your revenue by preventing casual piracy (using serials over and over again). There is real money to be made by stopping casual piracy.

Haha, casual piracy ... http://www.smh.com.au/it-pro/government-it/police-settle-piracy-dispute-with-software-giant-20130130-2dkwq.html ... oops.

I feel if the licensing is tight and easy to use then you are most of the way there. If crackers want to break in an show your app around then that may actually work in your favour if your app is always newer, better, supported and fairly priced and easy to use and it actually works!!!. Seriously, if you are doing subscriptions then manage the reminders properly - you would be shocked how many $x0k support contracts neglect this step and lapse. That's a #FAIL, folks. Services like Fastspring also handle dunning management for you which is why they cost more but they also earn more. Personally, I outsource the hell out of boring stuff that is NOT my core business - I just don't need any more complexity or distractions in my business nor in my life.

It wasn't until I wrote this response that I came to realise that perhaps "obfuscation is a big hack", it feels more and more like the 80% of work giving 20% return when you combine it with licensing and call it "software protection".

Yeah, I got off-topic a bit but I think this is a consideration when you're thinking deployment, subscription licensing etc.

SEANT

  • Bull Frog
  • Posts: 345
Re: Tools for deployment. Reccomendations
« Reply #11 on: December 13, 2015, 06:11:14 AM »
. . . .

I just find an app created by a user of this forum  has been "cracked" by a team of Russian crackers.
. . . .

Which one?
Sean Tessier
AutoCAD 2016 Mechanical

Jeff_M

  • King Gator
  • Posts: 4087
  • C3D user & customizer
Re: Tools for deployment. Reccomendations
« Reply #12 on: December 13, 2015, 01:25:33 PM »
Right now I'm looking at loading my DLL when CAD starts up. Is the best way to execute this to put in a registry key during install? Like this thread indicates: http://www.theswamp.org/index.php?topic=33538.0
I think the preferred way now is to use the Bundle format. If you want to post your app in the Autodesk App store you will need to use this method. http://adndevblog.typepad.com/autocad/2013/01/autodesk-autoloader-white-paper.html

Atook

  • Swamp Rat
  • Posts: 1027
  • AKA Tim
Re: Tools for deployment. Reccomendations
« Reply #13 on: December 13, 2015, 03:51:44 PM »
@CADBloke: I completely agree with you regarding obfuscation and cracking software. The key is to make it easier to buy than hack. I used to never consider subscriptions, but cheap subscriptions such as Adobe's Photoshop bundle for photographers is $5 a month have turned my opinion on that. Your application of Pareto's 80-20 rule is probably pretty close to the truth. Sure you'll lose some sales to crackers, but they were never going to pay anyway. Since we're selling to businesses, it's a tax write off anyway. Also, thanks for bringing up subscription reminders, I hadn't thought of that, but it makes perfect sense.

@Jeff_M: The bundle format looks pretty good, probably cleaner than installing in a folder in /Program Files. I hadn't considered the Appstore yet, looks like they've even got subscriptions, licensing and billing figured out. I'm hoping to make the app available for CAD alternatives such as Briscad, but I can worry about that deployment when the time comes.

CADbloke

  • Bull Frog
  • Posts: 342
  • Crash Test Dummy
Re: Tools for deployment. Reccomendations
« Reply #14 on: December 13, 2015, 08:57:20 PM »
I'm hoping to make the app available for CAD alternatives such as Briscad, but I can worry about that deployment when the time comes.

Here is how I am handling the builds for different CAD hosts: https://github.com/CADbloke/CodeLinker. There's a whole off-the-rails thread on it at http://www.theswamp.org/index.php?topic=50202.0 - have a look at the alternatives linked from there too, there are a ton of ways to skin that cat shave that yak.

As for subscriptions, I expect my app to migrate a lot of stuff to the cloud in the years to come - they better be used to subscriptions by then.

softempire

  • Guest
Re: Tools for deployment. Reccomendations
« Reply #15 on: December 14, 2015, 10:13:55 AM »
If you app is not very large, I think Inno Setup (http://www.jrsoftware.org/isinfo.php) is a good choice, it's free and powerful and easy to use.

You can also try the MS tool Wix which is a professional tool http://wixtoolset.org/

Keith Brown

  • Swamp Rat
  • Posts: 601
Re: Tools for deployment. Reccomendations
« Reply #16 on: December 14, 2015, 12:30:41 PM »
I use the paid version of Advanced Installer.  They do have a free version which from the features list looks like it would work great for creating bundles but have not tried it personally.


http://www.advancedinstaller.com/feats-list.html
Keith Brown | AutoCAD MEP Blog | RSS Feed
AutoCAD MEP 2014 / Revit MEP 2014 / EastCoast CAD/CAM addon / Visual Studio 2013

mohnston

  • Bull Frog
  • Posts: 305
  • CAD Programmer
Re: Tools for deployment. Reccomendations
« Reply #17 on: December 14, 2015, 03:47:22 PM »
I'm going through this right now.
If you want to offer your app in the Autodesk app store they will build an installer for you. It creates a "bundle" of files in a location that AutoCAD automatically checks every time it starts. For example C:\Users\YourName\AppData\Roaming\Autodesk\ApplicationPlugins.
If you create your own installer (which I did with Inno Setup) you will want to have it install the "bundle" in the same place. This means you will need to understand how that works. Here is one resource. http://exchange.autodesk.com/autocad/enu/online-help/browse#WS73099cc142f4875533992bfb12ce8a5f915-7e53.htm

They work with a company called BlueSnap for the financial transactions. (or PayPal)
As far as registering/authorizing your software goes there are many (too many) options. None that I found were simple.
I spent as much time writing the registration/authorization code (PHP) as I did writing the program. If you have the resources and can find a competent and trustworthy resource I think it would be worth it.

It does take a while for Autodesk to review/approve your app before it ends up in the store.
It's amazing what you can do when you don't know what you can't do.
CAD Programming Solutions

tetrahidrocannabinol

  • Guest
Re: Tools for deployment. Reccomendations
« Reply #18 on: December 22, 2015, 07:44:10 PM »
. . . .

I just find an app created by a user of this forum  has been "cracked" by a team of Russian crackers.
. . . .

Which one?
It seems that you know more than others: Lavteam, and other teams that are not Russians...

No one can avoid this.

If you have any questions you can send a private message, or you can ask here, I have nothing to hide..


Jeff H

  • Needs a day job
  • Posts: 6144
Re: Tools for deployment. Reccomendations
« Reply #19 on: December 22, 2015, 10:02:23 PM »
When comes to apps for AutoCAD, Autodesk exposes an API that everyone else has same access to so unless you "hack" autoCAD there is really not much you can do that isn't obvious to other developers.

You can decrypt, obfuscate, whatever you want but I promise you by just seeing a demo there are plenty of members here who can tell exactly what your doing. If it is something clever then might need to use it, but would be able to know what your doing without even trying to decompile it.

Did not mean to at the time but I have exposed how two popular paid apps work, but does not change the fact that someone with experience and talent still has to create the app, make it work for like a typical user expects, make it look and feel like a professional add-in, tested for the many different types of users and settings, etc... and have never noticed anyone create any similar apps.

What I have noticed most autocad developers worry about the most of being stolen to me is always been the least valuable aspects of app, and the part that is most valuable is ignored.


Other than the parts of the app can be hacked and used gain access to client information or data, other customers, etc.... I would not worry cause I can't see a 1 to 3 member development team creating enough resources worth spending the time to properly secure.



Kerry

  • Mesozoic relic
  • Seagull
  • Posts: 11654
  • class keyThumper<T>:ILazy<T>
Re: Tools for deployment. Reccomendations
« Reply #20 on: December 22, 2015, 10:41:30 PM »
. . . .

I just find an app created by a user of this forum  has been "cracked" by a team of Russian crackers.
. . . .

Which one?
It seems that you know more than others: Lavteam, and other teams that are not Russians...

No one can avoid this.

If you have any questions you can send a private message, or you can ask here, I have nothing to hide..

Which app by which developer(s) ??
kdub, kdub_nz in other timelines.
Perfection is not optional.
Everything will work just as you expect it to, unless your expectations are incorrect.
Discipline: None at all.

tetrahidrocannabinol

  • Guest
Re: Tools for deployment. Reccomendations
« Reply #21 on: December 27, 2015, 03:11:18 PM »


Which app by which developer(s) ??

xxx

I have answered by private message because I'm not sure that's a good idea to talk about this in public, unless the developer decides otherwise.
I'm sure the author is a member of this, forum, but now I think I was wrong about who is the developer.


Best regards

mohnston

  • Bull Frog
  • Posts: 305
  • CAD Programmer
Re: Tools for deployment. Reccomendations
« Reply #22 on: December 29, 2015, 01:52:30 PM »
About 10 people have downloaded my program so far. (4 from Autodesk and 6 from my site)
6 of those have never run the program.
I assume they are hackers.
I have done my best to secure my program. There is only so much you can do. Especially a one man team.
It's amazing what you can do when you don't know what you can't do.
CAD Programming Solutions

CADbloke

  • Bull Frog
  • Posts: 342
  • Crash Test Dummy
Re: Tools for deployment. Reccomendations
« Reply #23 on: January 03, 2016, 04:16:08 PM »
About 10 people have downloaded my program so far...
How long has it been available?

I think you have an awareness issue - I could use this but I have never heard of it. I like the look of it, I was going to write something similar but now I obviously won't bother. I will have a good look at it when I get some time.

As for awareness, perhaps the AutoCAD store needs a customisable feed of what's new and interesting.

Nice website, btw. You have done your homework on landing pages.

CADbloke

  • Bull Frog
  • Posts: 342
  • Crash Test Dummy
Re: Tools for deployment. Reccomendations
« Reply #24 on: January 05, 2016, 09:00:23 PM »
Wix because it is the standard these days. Autodesk recommend it for RealDwg installations. See the video on this page http://adndevblog.typepad.com/autocad/2015/04/introduction-to-realdwg-net-programming.html from 19 minutes in. 

Wix's creator worked at Microsoft for 13 years. https://www.linkedin.com/in/robmen - from there - "[Wix] is used throughout Microsoft to ship major products like Office, SQL Server, Visual Studio, and the .NET Framework."

Packt publishing have a $5 special on their books at the moment, I bought their 2x Wix books. https://www.packtpub.com/all/?search=wix - I haven't had a good look at them yet because I'm knee-deep in WPF, MVVM Light and MahApps.Metro, amongst other things.

Pluralsight have a course on it at https://app.pluralsight.com/library/courses/wix-introduction/table-of-contents - I have yet to watch it but their standard is consistently high so I expect it to be very useful.

There is also Industrial Strength Wix at http://iswix.codeplex.com/ and Wax, a Visual Studio extension for simplifying a few Wix things at https://visualstudiogallery.msdn.microsoft.com/ab48d869-8f75-4e02-8e7d-577346065aa6

btw, Wax's creator has another great extension for Resx files.

tvCAD is a RealDwg project so I will be using Wix [insert cry for help here].

Next stop - licensing. I am offering monthly subscriptions so I'll need something with an activation server. So far I'm leaning towards CryptoLicensing and LimeLM...unless anyone has another I should take a look at?

MickD

  • King Gator
  • Posts: 3619
  • (x-in)->[process]->(y-out) ... simples!
Re: Tools for deployment. Reccomendations
« Reply #25 on: January 05, 2016, 10:26:57 PM »
LimeLM looks interesting.

I'm going to build my own PHP/MySQL based licensing server later in the year which may or may not be 'strong' enough to do what you need.
I want it to be able to manage a user account where the user can 'check out' a license for a period of time and check it back in when done. Billing will be paid in advance and be based on how long they have the license checked out for, like a phone credit sim if you like. They can check it back in and save some credits when not in use.
Also, I need it to be flexible enough to allow the user to transfer it from machine to machine so they can move it from the desktop to their laptop say.

Let me know if you're interested and I might set up a git project soon to kick it off.
"Short cuts make long delays,' argued Pippin.”
J.R.R. Tolkien

CADbloke

  • Bull Frog
  • Posts: 342
  • Crash Test Dummy
Re: Tools for deployment. Reccomendations
« Reply #26 on: January 06, 2016, 09:40:08 PM »
LimeLM looks interesting.

I'm going to build my own PHP/MySQL based licensing server later in the year...
If you can do ASP.NET there are a few popular alternatives...
https://github.com/hibernating-rhinos/rhino-licensing
https://github.com/dnauck/Portable.Licensing + https://github.com/dnauck/License.Manager
http://www.infralution.com/licensing.html is a commercial product but you can buy the source code too. Also, made in Melbourne. :) They have an active support forum and don't seem to charge an annual support fee. That's my front-runner ATM, along with LimeLM which also has an active support forum.

I'm also looking at Crypto - lots of features but support is 1:1,as it is with http://www.eziriz.com/intellilock.htm.


I want it to be able to manage a user account where the user can 'check out' a license for a period of time and check it back in when done. Billing will be paid in advance and be based on how long they have the license checked out for, like a phone credit sim if you like. They can check it back in and save some credits when not in use.
Also, I need it to be flexible enough to allow the user to transfer it from machine to machine so they can move it from the desktop to their laptop say.
That's an interesting variation on a floating license. It should be relatively straightforward to extend a floating license class of one of the apps that supply source code publicly. .

Let me know if you're interested and I might set up a git project soon to kick it off.
I'm happy to help out with that but I'm looking for something now and something pretty-much over-the-counter, I have enough on my todo list already. I'm evaluating licensing and obfuscation options in a VM at the moment. I'll report my findings here.

MickD

  • King Gator
  • Posts: 3619
  • (x-in)->[process]->(y-out) ... simples!
Re: Tools for deployment. Reccomendations
« Reply #27 on: January 06, 2016, 09:49:06 PM »
I'm using Infralution at the moment and it works well and is very reasonably priced. I'm only using the license key system atm, not the server solution as my web server is Linux (and I'd like to keep it that way :) ).

The only inconvenience is managing user data, I have a site where users register to gain access to downloads and updates and I have to repeat that data in the licensing software on my desktop and keeping all that up to date goes against the grain somewhat.
Mind you, if my problem was being too busy doing this double entry I think that would be a good problem to have :), it just doesn't scale well. My goal is really just to make the licensing system more flexible and swapping over should be pretty straight forward once up and running.

Look forward to your finding, cheers.
"Short cuts make long delays,' argued Pippin.”
J.R.R. Tolkien

CADbloke

  • Bull Frog
  • Posts: 342
  • Crash Test Dummy
Re: Tools for deployment. Reccomendations
« Reply #28 on: January 07, 2016, 08:08:47 AM »
Some late night thoughts on obfuscators...

Obfuscation has some added bonuses
  • any stack trace you get will be junk unless you pay for a tool with a stack-trace mapping decoder.
  • How do you know everything still works? Do your unit tests and integration tests cover everything? Obfuscation can break things like reflection, binding, inter-assembly calls, plugins. You'd have to be very confident with your unit & integration tests (you have these, right?).

I just played with the trials of a few paid obfuscators - they look impressive but I couldn't even get the app (MahApps.Metro demo) to start after any of them had a go at it. You should try them out on a reasonably complicated app that is a known thing and see if it breaks. See how long it takes you to fix it. Then wonder if you fixed everything. Then keep coding. Then... Then ponder if you want to get yourself into that mess just to annoy some kid who wasn't going to pay anyway.

At least with licensing what you see is what you get, the build doesn't change when you deploy it and you have tested it (right?). If they manage to find all your needles in the haystack then email them a medal.

If your support etc. sucks so much that it's not worth paying for then you have bigger problems than script kiddies. Just make it easy for the nice people to do the right thing.


Rightyo...Licensing. Initial impressions on day zero: Infralution Licensing plus their Paypal IPN Server thingy looks very promising. I'd pay the US$10 /month just to run those services on something like Discount ASP ... or Azure or something like that.

There's a lot to like about Crypto Licensing too, particularly the custom floating license lease duration and the heartbeat option. One could buy the source code option from Infralution and bolt that on - it shouldn't be too hard. That's why I keep coming back to Infralution, the source code option (if I want to go there) and the busy support forum.

Portable licensing doesn't do floating licenses and I have already been asked for that. For floating licenses consider that the computer with the lease may be offline so a heartbeat may not be feasible and/or the lease period may need to be user (or admin) specified on a case-by-case basis. Rhino licensing does floating licenses in a basic sense but nobody seems to know how to build it and they're not telling so I did. Well, it's a psake thing and yaaaawn. If you try to build the VS solution first it complains...

1>------ Build started: Project: Rhino.Licensing, Configuration: Debug Any CPU ------
1>CSC : error CS2001: Source file 'C:\Codez\rhino-licensing\Rhino.Licensing\Properties\AssemblyInfo.cs' could not be found.
2>------ Build started: Project: Rhino.Licensing.AdminTool, Configuration: Debug x86 ------
3>------ Build started: Project: Rhino.Licensing.Tests, Configuration: Debug Any CPU ------
3>CSC : error CS2001: Source file 'C:\Codez\rhino-licensing\Rhino.Licensing.Tests\Properties\AssemblyInfo.cs' could not be found.
2>CSC : error CS2001: Source file 'C:\Codez\rhino-licensing\Rhino.Licensing.AdminTool\Properties\AssemblyInfo.cs' could not be found.
4>------ Build started: Project: Rhino.Licensing.AdminTool.Tests, Configuration: Debug Any CPU ------
4>CSC : error CS2001: Source file 'C:\Codez\rhino-licensing\Rhino.Licensing.AdminTool.Tests\Properties\AssemblyInfo.cs' could not be found.
========== Build: 0 succeeded, 4 failed, 0 up-to-date, 0 skipped ==========


Then it blows up when you try to run test and oh f....I'm a bit of a fan of things actually working so I've gone cold on the shininess of OSS for tonight.

...edit... Running the psake.ps1 script builds it and fixes the AssemblyInfo.cs errors.

https://github.com/ferventcoder/rhino-licensing is a later verison of Rhino and the author also wrote Chocolatey which, if you've never used it, is some kind of awesome. .

I'm still torn (ie. wasting brain cycles) between something like
  • FastSpring + LimeLM - more expensive but more hands-off
  • Infralution + self-hosted licensing + downloads - more control, more options (especially if I buy the source and break it), more money in my pocket but more late nights.
[/tt]
« Last Edit: February 19, 2016, 03:53:08 AM by CADbloke »

mohnston

  • Bull Frog
  • Posts: 305
  • CAD Programmer
Re: Tools for deployment. Reccomendations
« Reply #29 on: January 08, 2016, 01:28:24 PM »
I'm using BlueSnap to handle all the financial transactions. They have the ability to have subscription license models.
The way they handle licenses is - you provide a pile of license numbers (GUIDS ?). They dole out one when the customer purchases. An email is sent to the customer (and me) with the license code.
The have a secure api that let's you check if the customer is current with payments. This is a RESTful web service which can be programmed in PHP. (that's what I did)

The Autodesk app store also has the ability to offer subscriptions but I haven't done that yet. I don't know how their system works but I remember reading that they don't take any fees. I don't want to invest the time especially since I get more downloads from my website than I do from their store.

I found that it took as much or more time to work out the commercial side of my program as it did to write the whole thing.
It's amazing what you can do when you don't know what you can't do.
CAD Programming Solutions


CADbloke

  • Bull Frog
  • Posts: 342
  • Crash Test Dummy
Re: Tools for deployment. Reccomendations
« Reply #31 on: January 08, 2016, 06:06:12 PM »
...The way they handle licenses is - you provide a pile of license numbers (GUIDS ?). They dole out one when the customer purchases...
Consider what happens if when one of those serial numbers hits the Internet. If one serial number unlocks any number of seats then why bother having different serial numbers, apart from being able to track who leaked it? I'm going with an activation server based thing, for various reasons, monthly subscriptions and floating licenses being one of them. See http://wyday.com/limelm/features/why/ for the difference between just serials & activations.

While you're reading, this article: http://www.codeproject.com/Articles/7312/Piracy-and-Unconventional-Wisdom is thoroughly worth your time.

Displaying the registered name and email address in the app is one way to deter key sharing - their name and email address would appear on all pirated installations. Make sure they know that.

The have a secure api that let's you check if the customer is current with payments. This is a RESTful web service which can be programmed in PHP. (that's what I did)
All the payment providers do that, Paypal has their IPN, Fastspring, Stripe, Braintree etc do the same. Features like storefronts (Fastspring, Gumroad etc), subscriptions etc separate them and their pricing.

I found that it took as much or more time to work out the commercial side of my program as it did to write the whole thing.
I'm rapidly coming to the same conclusion. Actually, in the last year I have spent most of my time on marketing and product validation, a good thing, don't build something nobody wants,and setting up commercial systems (not so good because it is non-core but a necessary evil).

As an aside, here are a couple of podcasts I listen to regularly..
If you like that sort of thing I have attached my current podcast subscription list. </aside>

Ultimately it's all a matter of time vs cost, how much do you want to DIY. FastSpring + LimeLM is practically zero DIY but you pay for it. Roll your own + Paypal IPN is the other end of the spectrum. Paying the fees not be a bad thing if your time is better spent on creating and supporting the product you're good at, generating sales and consultancy income. I still freelance so the bottom line for me is that hourly rate.

CADbloke

  • Bull Frog
  • Posts: 342
  • Crash Test Dummy
Re: Tools for deployment. Reccomendations
« Reply #32 on: February 19, 2016, 02:42:03 AM »
Just discovered http://netlicensing.io/ - it's free unless you want to go all enterprisey on it.

Free makes me nervous but they seem legit, they've been around for over 3 years[/url, and they [url=https://www.labs64.com/]do client work. They only recently went to a freemium model: http://netlicensing.io/blog/2015/09/01/netlicensing-is-going-free/. Check out the rest of their blog too, it is good reading. NetLicensing's client code is on Github. I am checking this out as an alternative to LimeLM.

There's also a LimeLM clone I discovered at http://www.cryptlex.com/ but I personally have zero confidence in it - it just looks like a shiny but shallow rip-off. Judging by their support forum traffic they have very little traction so you'd be an alpha tester there, methinks.

LimeLM has a new version coming out very soon which sounds interesting. There has been a fair bit of talk about it on their discussion forum. In the founders own words in an email today ... "We’re getting there. They’re almost out, and we’re really proud of the work we’ve done." I still have a strong preference for LimeLM and their no BS philosophy.

As an aside, LimeLM's build & update tool looks interesting too.

... (update an hour later)... NetLicensing is somewhat confusing to configure, particularly compared to the more thought-out and documented process for LimeLM. Their C# Github repo has some odd coding standards (probably Java) and needs tweakage to compile in Visual Studio - I think it was written in MonoDevelop (have a look at the .sln file). Their plugin shop only does Paypal and only does Euros.  You'd have to run an intermediate web server for license validation because their API key  is not granular, a key in a client app seems to have full access to everything. Well, that's what the demo does.

Verdict: not as straightforward and mature as others. Worth looking into but I am reluctant.
« Last Edit: February 19, 2016, 03:59:21 AM by CADbloke »

CADbloke

  • Bull Frog
  • Posts: 342
  • Crash Test Dummy
Re: Tools for deployment. Reccomendations
« Reply #33 on: October 04, 2016, 05:24:38 AM »
Today's (actually a while ago but I forgot) discovery: https://wixsharp.codeplex.com - Wix done via C#. I'll get to that in a minute, after this boring story.

I just spent a weekend looking into Win installer GUIs. Yeah, I bet you're jealous.

Advanced Installer is the nicest one I've found so far that does MSI with MSM merge modules plus patch-updates but that version is US$1,499. & $499/yr maintenance OUCH. That sucks because the $399 & $139/yr would be fine if it made patches, it does auto updates but doesn't build them. What a rort. There's a free version that doesn't do most of what you actually need (it has a long feature list but meh). What sucked more is that it built a broken MSI as soon as I added any RealDwg MSM to it. I never got it to build an MSI that worked with a RealDwg MSM. Yes, I'm thinking the same thing but it I can't fix that either. Worse, it also completely obfuscates anything Wix-related - you never see any *.wxs files and you can't debug the process. You could decompile the MSI with dark.exe but meh. That's a shame because Advanced Installer is actually usable by mortals and I seriously considered buying it just put me out of my misery. But no, the misery continues...

Installshield was more confusing than Wix, a bigger installation than Windows and more expensive than the looming US election (good luck with that). Just so you don't think anyone had less fun than you last weekend, I tried Advanced Installer, Add in Express, Install Aware, MSI Factory, Install Shield (in case I win a lottery) and I forget whatever else. I didn't bother with anything that costs more than a car that's faster (or newer) than mine. These and most of the other (expensive) tools don't expose Wix XML and it makes them really hard to debug which is especially troublesome for Wix. The downside of hiding all the Wix is that it hides all the Wix so you never know what is _really_ going on.

I revisited Wix angle brackets, "Wax" (Visual Studio Add-on which I already use) and also Wix# at http://www.codeproject.com/Articles/31407/Wix-WixSharp-managed-interface-for-WiX which is basically a C# transpiler into Wix but it does actually build and uses Wix XML so you can see what you broke, or at least learn how it actually works.

You can Automate some of the XML building with the Visual Studio add-ons from the Wix Tools set and "Wax" ... and learn more Wix ... it still seems to be the most painless (in the long term) way to do MSI installers, for differing counter-intuitive values of "painless" IsWix would be good if it still worked properly, which small parts of it it don't (the file drop target zone). There's a post about it at http://blog.iswix.com/2011/03/installation-collaboration-workflows.html

None of the Wix builders I like (or can afford) do patching in any sensible manner. So, here we are. Patching for MSIs that don't upset the Add/Remove programs can really only be done with MSP installers.

So today I be mostly mucking about with Wix#

For updates I'm pretty-much sold on https://wyday.com/wybuild/help/automatic-updates/. I'm using their LimeLM and it's solid, working really well. Recommended. It's also large (2.5MB if you include the floating license DLL) so perhaps a bit impractical for small AutoCAD plugins. I'm revisiting Infralution for that one. Still undecided though.

Atook

  • Swamp Rat
  • Posts: 1027
  • AKA Tim
Re: Tools for deployment. Reccomendations
« Reply #34 on: October 04, 2016, 02:15:43 PM »
Thanks for the updates CADbloke.

As jealous as I am of you getting to looking into installer GUIs all weekend, I guess I'll just settle for your review  :roll:

And I won't have the luxury of looking into autoupdates for a week straight either, but I'll look into LimeLM and keep an ear on this thread for any other input you have.