My first app is for sale – RunAsPlus – on AllMyApps.com, a new windows app store that is trying to capture the idea that the iPhone and Android have been making waves with. The pic below is linked right to the product page.
It surprises me that something similar has not been established before (if it was, I wasn’t paying attention!).
Windows has provided developers with a rich SDK for far longer than iOS or Android, yet there has been little work to centralize application distribution until now. Furthermore, I’m much handier with .NET right now than I am with xCode/Cocoa or Eclipse/Java, and I have far more ideas about web- or desktop-based apps since I spend more time using a desktop or laptop than a mobile device. Perhaps that trend will change for me in the future, but right now, AllMyApps.com is the outlet I’ve been looking for. My experience thus far has been positive (albeit no sales in the first few days…).
Creating my app was the easy part. It was the extra stuff that took more time (EULA, licensing, icons, deployment, etc.). You do have to plan before you can submit your app. Here are some short explanations of how I conquered these issues:
- I have little experience with creating a EULA, as this is my first app that is officially for sale…so I searched around and found a free trial of RocketLawyer.com would allow you to generate the software EULA by answering straightforward questions. Good stuff!
- This was probably the part that caused me the most trouble. License key generation can be a complex matter, and managing them can be even worse! Without much experience in the matter, I was able to cook up a simple scheme to meet my needs.
- AllMyApps.com will maintain a license pool for you or connect users to your licensing server. I went with the pool and pre-generated a couple hundred keys.
- While my scheme is far from hack-proof, it provided a valuable learning experience related to integrating license keys and license key checks into an application.
- Note that Android and iOS apps don’t have to deal with this issue in the same way since their target platforms are more restricted than a full PC operating system.
- I was surprised at how tricky it is to get a “good” icon into Visual Studio and have it scale appropriately. Before this project, I had just used freebie icons and took for granted the way they had different images embedded to meet scaling needs.
- I was also disappointed to see that Photoshop Elements 8 doesn’t include any sort of “Save As…” functionality for Windows icons. I ended up using gimp to take the multiple images (png images, 16×16, 32×32, 48×48) and squish them into a single icon file.
- AllMyApps.com attempts to provide users with a sort of automatic deployment (click-once-to-install thinking), thus, they require a silent installer option.
- Visual Studio 2010 can do InstallShield LE or a traditional MSI…I didn’t care to register for the InstallShield stuff, so I went with the MSI package. Silent install is a snap – it’s included with normal MSI packages as a “/qb” parameter.
- Visual Studio’s setup projects don’t give you a way to create “normal” shortcuts – only advertised shortcuts. The idea behind the advertisement is to allow your application to self-repair or run user-based setup tasks during first launch, etc. I had no need for this type of behavior, and in fact, the advertised shortcuts caused issues since they do not allow a user to shift + right-click and select “run as a different user” or similar option. Instead, I hunted down a special MSI property that disables shortcut advertisement, allowing me to utilize the handy MSI builder in Visual Studio without the shortcut problem!
- If you want to know how I did this, please email me and I’ll be happy to share.
- User Account Control
- Ah…yet another challenge. My app store the settings file (an XML document of commands and parameters that the user can customize), by default, in the “C:Program FilesRunAsPlus” area.
- If an application does not properly request admin rights at launch and requires write access to certain registry or files system areas (like C:Program Files), the application will be forced into a virtual file and registry system and the “real” areas will be unaffected. So, if unabated, a save on the settings file actually does save…but in a totally different area!
- Fortunately for RunAsPlus users, I fixed this issue by adapting the manifest to request admin right at each launch. If you don’t use UAC (I don’t, by the way, as I think it is annoying!), no worries. If you do, you’ll get a prompt like you would for any other app that requires “admin” rights and things will work as expected.
- Again, if you’d like to know how I did this, please email me and I’ll be happy to share.
Whew! Solving these issues certainly took a few evenings, but I came away with a better understanding the entire development and deployment process for .NET winform applications. Many thanks to my wife who helped keep me on track despite challenges!
Feel free to post with questions or comments…thanks for reading.