Is there a free way to distribute free Windows 8 apps? - windows-8

I'm considering developing a free non-enterprise Windows 8-style application. I would like to be able to distribute it with no fees charged to myself or users. (Please not that I am not asking about Windows 7-style desktop applications.)
From Microsoft Community, it seems that the only way to distribute these types of applications is using Windows Store. In fact, since the removal of the term, metro, it appears to me that one of the replacement phrases is Windows Store Apps, which clearly implies a strong association with Windows Store.
The licence agreement for the store appears to support distributing free applications. However, I've also read that there is no (permanently) free way to use the store as a developer. (See this, for example.) Microsoft does appear to market some 'free' methods to do this, but they appear to be first-year-free subscriptions that still require credit card details for subsequent years.
I have already looked at and considered the following Stack Overflow questions about this:
How to Distribute Compiled Windows 8 Metro Applications without Windows Store?
This question appears to be in the context of using pre-release Windows 8 before the store was available.
How to install a Windows 8 App Without Submitting to Store
This appears to be related to enterprise users and applications.
How can I distribute a free Windows 8 application without having to pay for a Windows Store developer account?

You cannot. A store account is required to distribute applications in the Windows Store; however, there are programs in which that cost ($49 per annum for a individual developer) is absorbed, such as MSDN subscriptions and BizSpark.
Sideloading (as mentioned in the first link you provided) remains possible, but requires (and automatically provisions) a free 'developer' account to run it.

Sort of.
What you do is you go to the Store menu, and hit "build store package." When it asks you whether you want to build something for store, you hit no.
You will be presented with a directory that contains a .sh1 script, which you can then use to install the application.
The downside is, this requires enterprise windows or a (free) developers' license to install. So it's not general population adequate.
Now, I should point out that .EXEs still work just fine the old way. There is only an impediment if you mean Modern UI applications.

Related

How should I go about to create a demo of my software with limited functionality?

I want to create a demo of my software with limited functionality. What is a good way of doing this?
More details about my specific situation:
I am developing small scale software and don't worry about crackers and such, but still I want to get the best protection for my software with the least effort. The application I am developing is written in VB.NET and I am writing it in Visual Studio 2013.
There are many questions marks I have about this:
-Does this kind of protection take time to implement or is there a simple way? (I'm looking for a simple implementation)
-Should I use some kind of third-party service for this?
-If I use license keys, how do I generate the license keys?
I would be glad for either a complete or partial answer to my question
A basic solution is
1. Using registry (Windows) 2. or a license file. 3. or Online activation
I just give you the technical suggestion not code.
Using registry
Complete your soft but on the init page (Starting page) do the registry checking and find for a key if it is available load your project with full access, if not load with limited features.
Using license file
When client install your software to their machine. Your software first ask the product key. If a valid product key entered your software can generate a machine specific license file and store it to your software's installation location. From the next time your soft will get the license file while opening so it will not ask for a product key.
Now for machine specific license you can use device MAC (But it is a bad practice), Client name and details information and the encrypt it and save as license file.
Using online activation
You can easily create online activation. In this case when some one buy your soft you just create a online account for him to your activation system and give the client the product key generated by your online activation system. So than when client enter product key your soft can download client info and store it as a license file.
There are many other techniques available. And you can implement your one also. Think!

Does isolated storage contents survive an update?

If I write a license file to isolated storage in a vb.net winforms app, and the app then undergoes a minor update, does the license file get "carried over" somehow during the update?
Isolated storage seems to use the full version number as the lowest level directory name which makes me think it doesn't.
The license file is needed to allow full use of the app and I don't want users to have to re-enter their license code after an update.
Not sure how the update will be done yet - either Inno setup or Installshield LE.
Any advice appreciated.
If your app is a WinForm one, I advice you not to use IsolatedStorage, which is a little too restrictive and uncustomizable. The IsolatedStorage isn't overriden in Windows Phone and Metro apps but (if I remember well) is in Win Forms. To conclude, it would be better to use a file in another location (like AppData/Roaming/YourCoolAppName), and it has the advantage for you to know exactly where the data is stored.

Generate key for a software developed using vb.net

Hai guys,
I ve developed a salary calculating software using vb.net.... Its working fine and i ve converted it to an exe file... My drawback is it can be copied and pasted in another system very easily... I want to generate a key for the exe file and while installing the key should be used and when installation is completed ,the key should not be used again... Is this ya secured one or give me some ideas how it can be done....
There are many product on the market that will help you generate software keys, for example www.softwareshield.com and www.exeshield.com Or simply do a Google Search.
For more serious protection you can use a hardware key that unlocks your software, for example http://www.matrixlock.de/english/index.htm
It all depends on your adience.
If you are targetting end-users / home-users: no matter what you do, your software will be hacked (if it is good enough).
If you target the enterprise: Companies are mostly willing to buy your software, and do not copy to other companies. They have far more to loose when running illegal software. But also they are the first to complain if they cannot distribute your software using their distribution system. And this system will be blocked by your copy protection scheme.
Conclusion: Implement the simplest and cheapest protection scheme you can find. And also find a way you can bypass it easily if you want enterprises as your customer.
You'll need to sign your assembly, and have some form of online authentication process to manage the keys.
Whatever copy protection scheme you implement....just make sure that your paying users don't get a lot of discomfort from it.... You want to keep bad users from copying your software without permission, but when good users get problems because of faults in your copy protection software, you will lose a lot of credit.

Adobe AIR for an offline application: is this the best option?

I'm looking to develop an offline version of an application that still needs to connect to the live site to retrieve the information and store results.
The application is for an online course system, that now needs to work when an internet connection is either unavailable or flaky. The system currently tracks each page viewed of the course (with flash and video content) and then also displays and tracks the taking of multiple choice exams. This all needs to be provided offline. I'm thinking that the program will connect through the users account at the start to download either a portion or all of the course, including exams and then at the end connect again to upload the results. (It'd be cool if it could do the process automatically when a connection is available.) The application needs to look similar to the online version and needs to be easy to use (easy install, little user input required for upload/download of results).
I have done a bit of research and it looks like Adobe AIR might be a good middle ground between the online version and an offline version.
My biggest issue is that I don't have experience developing desktop applications as I am a PHP developer, so I'm looking for something like AIR that bridges the gap. (The online version is a LAMP application.)
Has anyone used Adobe AIR for this type of offline application? How easy and secure was it?
Are there other solutions out there?
I think AIR is a great choice for this. I use AIR all the time now for in house utilities I write.
The built-in database and persistent store are great.
From your description, it sounds like Google Gears is a little closer to what you're looking for.
Adobe AIR is a great solution for this. We are building something similar. But we are facing problems in resuming downloads if the download process gets broken.

Concept of "Data Directory" on each platform

This is very similar to Where should cross-platform apps keep their data?, but expanding on it a bit.
There is some good advice on where the parent directory for data should be, but not so much on what a given app's directory should be.
For example, let's say we have a cross-platform application, written by My Corp, within My Brand, called My App. Assume there are other products in My Brand which presumably want their own data, and other brands in My Corp as well. Where should its data and/or configuration go on Windows? On Unix? Mac OS9? Mac OSX? Other?
e.g., on Windows, would the data go in "...\Application Data\My Corp\My Brand\My App", while on Mac OS X the data would go into ~/Library/Application Support/My Corp/My Brand/My App" and on Unix it would go into "~/.mycorp/mybrand/myapp"? (I would imagine other platforms would use the mangling of unix, even if the base directory may be different.)
If there is no real convention, does this seem reasonable? Any suggestions for Mac OS9?
Just to start the reflection:
You have to make a clear difference between:
application state data
settings
data (can be common for several applications)
The latter may eventually be in a database, or could be managed by one or several applications, or encapsulated by a communication bus in order to avoid all the other applications to dialog between themselves to access those data.
The data representing the state of an application can go in 'Application Data' as mentioned in the question "where cross-platform apps keep their data ?".
But the settings... It depends if you application need to be launched with several "configurations":
one for each platform: in case you must manage them in the development stage, and package that file in the release stage, in order to store it in 'Application Data'
many for one platform, like with different Heap sizes, or different settings representing different operations to be executed by your same app. And that leads to an explosion of setting files (also stored in various sub-directory of 'Application Data')
That is where the idea of abstracting those data into a Setting Provider is a good idea.
Actually, we have so many different configurations for our settings we store them into a database on a separate production machine. That way all the apps can access them, but more importantly, we can access and change them in real time, without having to stop / restart the applications for each modification, or without having to go to each deployment platform.