.NET Software Update Manager - c#

We are developing a frame application which supports many vendor devices. Devices are installed as a plug-ins within the frame application. But the device plug-ins are not part of control panel-Add Remove programs or MSI installers.
We download the device plugins as a zip file which contains XML data and few DLLs.
What are the recommended solution available in .NET so that whenever there is latest update in the devices, our system can detect and automatically update it through internet.
ClickOnce seems to be black box. We need to inform the customer that there are updates for the list of devices.
One example could be Ubuntu Update manager.

What do you mean ClickOnce seems to be the block box?
ClickOnce can update by asking the user or in the background without the user even knowing about it.
But since you are talking about plug-ins I suggest you take a look at the Managed Extensibility framework, this might be exactly what you need.
Allowing you to support plug-ins easiliy AND deploy updates by using simple zip files with some XML and DLL's as you said.

I think AppLife Update does the job well. Sure, you have to pay for it, but you have to pay a lot less than writing something equivalent from scratch would have cost.

Could it be that you are looking for a package manager?
While well-established in the Python/Ruby/Linux/... eco-system, .NET is bit behind.
There is a short overview (recent) article on InfoQ on package management in .NET.
And Ayende appears to enjoy Nu. It is the first result when searching for .net package management

Related

Windows 8 Store Import

Reading the following (and skimming other areas of the site):
http://msdn.microsoft.com/library/windows/apps/br211361.aspx
It seems as though I have to re-write a program I've been writing in VC# 2010, to be able to put it on Windows Store. Is this true? Can I simply import my project into VC# 2013 and then put it out there? Is there a reason I shouldn't do that even if I could (i.e. it looks different than other Windows 8 apps and users will be off-put by it)?
If I can't import and release my project into Windows Store directly, and this is a little bit of a tangent, but, can I at least import it into Visual Studio 2013, and then begin rewriting/adding the parts I need to to be able to make it compatible with Windows Store? I've never used app stores before, so please be gentle.
In most cases, opening a VS2010 project in VS2013 is not a pain.
You can find 2 kind of apps in the Windows Store :
Modern UI apps (aka Metro)
Desktops Apps
If you want to create a Modern UI app you need to target the .Net 4.5 framework. To do so you need to upgrade to VS2013.
But most of your work will be to rewrite a huge part of your program as the modern UI is not compabible with WPF (and you will need to manage touch devices). Other assemblies also doesn't have all the features of the desktop ones, so you will probably have a little bit of work in that area too.
Here is a link that explain the process of publishing an app in the Windows Store : http://msdn.microsoft.com/en-us/library/windows/apps/jj657972.aspx
If you want to publish a desktop application it seems to me that you only need to provide an URL to download your package. Be careful it is not possible to submit that kind of app with a personal account, you need a company account to do so. You can find more information about that process on MSDN: http://msdn.microsoft.com/en-US/windows/desktop/dd535817

Check for Updates functionality For Windows application

I am using Install shield limited edition to install my WPF application.
My current scenario is like this.
The created set up is available in our website for downloading.
User can download and then Install the set up on their own machines.
I have option to modify the software and will update the modified
installer into the website , so that users will get the updated
software.
My Next step:
In my application I am going to include “Maintenance release (Download Updates)” functionality. So that users can download the latest updations automatically from the software itself.
How Can I do this.? Any help would be appreciated.
Is there any facility in the Install shield for this?
I recommend NAppUpdate. It provides a framework with features for all tasks required for an update process. For example, it lets you check for updates from various sources (Web http / ftp), trigger update checks and replace your binaries with the updated ones.
You still will have to integrate this into your app, so it is not an "out of the box" solution. But my experience is that most out-of-the-box solutions eventually cause headaches due to limited customization possibilities and moreover are rarely free (if this is important to you).
A good introductory article can be found here: The philosophy behind NAppUpdate.
I don't think there is any facility to add that feature through install shield but there is a software update framework for .NET called NetSparkle. You can try that if you want. If you want to implement something on your own then its better to some other websites like code project that provide startup code or similar projects.
Here 's the link for NetSparkle.
There is also a similar question on StackOverflow : Code to check for updates, install new version of app

Time-based trial for an application - how to check when app was downloaded

Is there any way to access the time the app was downloaded (or first launched, etc) as this would be of great help in implementing my trial run feature on my app.
I don't remember how does it stand on the Win8 platform, but for WinPhone7.0/7.5 there's a clear warning/guideline in the official documents from Microsoft, saying:
Do not rely on usage time limited trials to protect your app’s value.
Typically, it is best to protect the value of your full mode app by limiting trial access to key code paths. A user may uninstall and retry an app without restriction so a trial design that offers full mode behavior for a limited time provides only inconvenience as a barrier to reuse.
Source: Creating trial apps for Windows Phone
The problem in time-based trials is very simple: when you uninstall the application, the Phone's operating system will erase it completely. This means, that nothing will be left, not a byte. If you write any data to isostorage, it will be purged upon deletion.
So, if you make a time-base trial and store a "installed date", then the user will simply uninstall the application and install it again, and will be happy to get next free-trial period. If it is OK for you, well, then just be aware of that.
To make a true time-trial you'd need to create some internet service that your application will register to with the phone's/user's UUID, and then the app would need to check at the service to determine whether the trial has passed or have been used up by a previous installation..
What's more, Microsoft Phone Appp guidelines state that generally you should not create an application that "turns off some of its features" at some point of time. This irritates end-users and the makes the whole phone/platform "bad" from the user's point of view, because people don't like to lose what they once had.
IIRC, at some early point of time Microsoft even advised to create two separate applications: one free and without the extra features at all, and one paid with all extra features. Later, TrialModes were included in the Market's workflow and Microsoft's App Licensing API introduced a very easy way to determine if an app works in "free trial" or "fully paid" mode, depending on whether it was downloaded from the market for free or not.
I truly don't know which one is most-recent, so let me paste three:
XNA: http://msdn.microsoft.com/en-us/library/dd282459(v=xnagamestudio.30).aspx
SL: http://msdn.microsoft.com/en-us/library/windowsphone/develop/microsoft.phone.marketplace.licenseinformation.istrial
W8: http://msdn.microsoft.com/en-us/library/windows/apps/windows.applicationmodel.store.licenseinformation.istrial
If you are trying to implement a trial function within your phone application, why not latch onto the libraries that MS provides?
MSDN Creating a trial application
MSDN Sample code for integrating a trial applicaiton
This is only available for WP7.1, WP7.1+ and WP8 (when written for WP7.1)
Microsoft recommends using the WP8 LicenseInformation class, to do
MSDN LicenseInformation class, WP8
Hope this helps!

Making a one-file visually customisable installer with patching/updating for XNA C# game

I'm making an XNA game and thought I'd look into making installers for it for when it's finished. It would be great to be able to distribute a single file that contains all the content and extracts all that to the install directory. Also I'd want to choose install directory and other options, and it would be nice to set the appearance of the installer to be in the style of my game.
Updates and patching are also something I'd want to set up. I have a website, so I'd like the game to check for updates from there.
I am familiar with ClickOnce, but I don't feel it is appropriate for the situation, and I've looked at Advanced Installer, Inno installer and wix.
I would love to make my own installer in c# winforms or similar, but I'm new to the area and don't know if this is possible or where to start. I trawled the net but could only find links to the third party stuff, so maybe makign my own is impossible? I wouldn't be bothered about not having start menu entries or registry values or whatever, just want to extract files somewhere then later check for updates before running.
Thanks for helping a newbie!
WiX is a good option for all the requirements you have listed above.
It would be great to be able to distribute a single file that contains all the content and extracts all that to the install directory
Standard WiX Setup project can get you going with this. There are default templates for basic installers
Also I'd want to choose install directory and other options
The default templates are all customisable, so you would be able to collect additional data easily, what you do with the data is up to you.
and it would be nice to set the appearance of the installer to be in the style of my game
WiX 3 onwards (I think) has a project type of 'Bootstrapper' which allows you to put your own UI infront of the installer, such as WPF or even XNA itself if you really wanted. You can specify and budle the requirements for the installer, eg .NET 4.0 if you are using a WPF front end.
I would love to make my own installer in c# winforms or similar
Also an option with WiX Bootstrapper.
Installers are more complicated than you might think, also, for updates and patches, keeping information around of versions of files and how to handle them gets complex fast. My advice would be spend time on your game and take advantage of the hard work of others who have thought long and hard about these problems.

How to make a custom installer for games, etc?

Can anyone tell me how to create a custom installer to 'install' games. I say custom meaning I don't want the user to have the option where the game is installed. I want it to be a straight forward process, maybe with just one loading bar.
The program I'm developing is a 'center' for game playing, which includes a community and other features, such as a timer that records how long a game is played for. I just thought that installing each game in one place, with a simple installer would make the program easier to use. It also will allow me to do other features as the games will all be installed in one place. No need for the user to specify where the game is installed.
Would this be possible?
I'm presuming your game is developed in C#, rather than requiring the installer be written in C#?
If that's the case, there are plenty of options available to you for installer packages. Probably the most customisable option, whilst still being free, is Nullsoft Install System. The installers are built around some basic scripting activities, and can be as simple or complex as you desire - the installation, and the wiki have plenty of example scripts that you can explore and experiment with.
OT: Install Location
Personally, I'd consider it bad practice to disallow the user from selecting their own install location and, in fact, it gets me pretty frustrated when anything but system-file installations (e.g. drivers) stop me from choosing a directory. Many users will choose to locate certain types of installation and data on a non-default device (e.g. virtually all of my games are housed on a separate drive to my main Windows installation). If you need to remember the installation location so badly, create a registry key for it.
Another system you can use is called Inno Setup - http://www.jrsoftware.org/isinfo.php
If the games already exist your best option would be to call the MSI installers in administrative mode (see documentation for MSIExec). Then you could actually
Set a predetermined location for the games
Remove any UI and replace that with your custom installer UI
Obviously that would only work if the installs are really MSI modules (with some more work also for installers that have MSIs packed into EXE setups). That is true for most, but likely not all games.
Please note that this would be a sizable task and to be honest I cannot see any value in doing what you are planning. But thats up to you.
As start you would have to read into the MSI documentation. I'd recommend WIX (Windows Installer XML) for the beginning.

Categories

Resources