Is there any definitive documentation on writing software installers? - c#

I've read a bunch of documentation on installers and haven't come across anything good that explains the underlying concepts. Most of the installer software I've come across is based on the same "database" like structure that I just don't understand at all.
All of the documentation that comes with the various products - i.e. WiX, InstallAware, Wise, InstallShield etc expect that you understand these underlying concepts [which I just don't get] in order to follow what they're talking about.
Can anyone point me in the direction of documentation that explains the concepts of software installers so that the software documentation actually makes sense?

Update - since my original post, WiX: A Developers Guide to Windows Installer XML has been released and is also a good resource for beginners. (I didn't find it that great myself though.) I still suggest reading The Definitive Guide to Windows Installer as a starting point. Windows Installer and WiX isn't something you just pick up in a few days, it'll take a few months.
Go pick up a copy of The Definitive Guide to Windows Installer. I've lost count of how many times I've recommended it to people who are getting stuck on the concepts and are struggling to understand how Windows Installer works. Make sure you grab the Windows Installer SDK as well.
Getting to grasp with Windows Installer is the first stage of your learning, once that's sunk in you'll understand how InstallShield works (or doesn't work as the case may be..). Wise, InstallShield, etc try to shield you from the underlying concepts and have their own trickery/hacks to get around the limitations of Windows Installer.
Stage two (if you're serious about understanding Windows Installer) is learning WiX (The WiX Tutorial isn't too bad, although it's a bit out of date and targeted at WiX 2.0 rather than 3.0) and joining the wix-users mailing list. Don't join the users list until you've finished the book mentioned above, you'll be well in over your head. Questions from those who don't understand the Windows Installer concepts largely go ignored, however questions from people who have done their homework will find it a great resource.
What's not covered in the book is Vista, Robert Flamings blog entries on Understanding UAC and Vista (written when Vista was in it's beta stage) are the best information you'll find on the topic.
One thing that both the Windows Installer and WiX teams is really good at is keeping the documentation (Help files) up to date. Whenever I'm working on setups I'll generally have Wix.chm and Msi45.chm open on one monitor ;)
Along with the documentation, blogs from people on the WiX and Windows Installer teams are great for learning new tricks, etc. Far too many to list here, but once you know the terminology you'll find most of them popping up in google results.
If this all seems too much, then check out NSIS. Great for simple "I just need to copy files" type installations, not so great for enterprise deployments. If you're torn between the two then maybe go take a look at Rob Mensching's old blog when setup isn't just xcopy. Articles there are probably what convinced me that diving in and learning the underlying Windows Installer concepts would pay off in the long run. And it has :)

This (MSDN, About Windows Installer) is the best starting place for good 'General' information about installing on windows. All of the installers that are "msi-based" will relate to these concepts.
The only 'other' installer types (in the windows world) is NSIS which is really not for enterprise installations (I don't want to start a debate on procedural vs. non-procedural installers here).
Install stuff is REALLY complex with advanced concepts like advertising, restore points, patches and transforms and the like, but when you 'get it' you can do some pretty cool things, like the work-around to get TFS 2008 using SQL 2008.
TFS 2008 does not support SQL 2008, but TFS 2008 SP1 does, so what you have to do is "patch" the TFS 2008 RTM install with the TFS 2008 SP1 install with a command like this:
msiexec /a C:\TFS\RTM\AT\vs_setup.msi /p C:\TFS\SP1Extract\TFS90sp1-KB949786.msp TARGETDIR=C:\TFS\ATIntegrated
but the result is something that you can no hand out as "TFS 2008 with SP1".

You could try
Windows Installer resources (Starting page for the links below)
Windows Installer (Look at "Overview of Windows Installer")
Windows installer on MSDN (For SDK information)
Hope that helps ...

The best introduction to Windows Installers I've seen is Phil Wilson’s book Definitive Guide to Windows Installer. This was written in 2004 and does not have Vista or Win7-specific features.
The best site I have seen for Windows Installers is www.installsite.org. It has some introductory articles, but is targeted to experts.

I recommend the following feeds:
http://blog.deploymentengineering.com/feeds/posts/default
http://forum.installsite.net/newsfeed.php
http://msmvps.com/blogs/installsite/rss.aspx
http://robmensching.com/blog/Rss.aspx
http://support.acresso.com/rss/acresso_is.xml

If your install needs are not terribly complex, I would suggest trying out InnoSetup. I used it on a suite of windows applications installers a few years ago and had no complaints. Much simpler than InstallShield and MSI, but your mileage may vary.
I am not in any way affiliated with InnoSetup.

A good place to learn how installers work is by looking at the code.
Download or browse the source code for Inno Setup by Jordan Russell.
Download or browse the source code for the Nullsoft Scriptable Install System.

Related

Best way to creating setup of C# application

Hi i am recently working on a c# window form application. I have done the all stuff and noe it's time to deploy the application, But i am unable to activate the visual studio installshield feature. Can any one here able to tell me any alternet way to create me a setup file of my application. Like Innosetup compiler or other.
Visual Studio Setup Project is easy to work with and is available for both VS2013 and VS2015 in the form of Visual Studio Extension (separately from the default VS installer). Download figures suggest that a whole lot of people are using this extension.
I prefer to use InnoSetup, which is free for any use including commercial.
You can have a UI to make creation simple, but if you want really complex functionality you can write code to create those functions. There is a thriving community of developers that use and contribute to the product, so finding examples is usually easy, but you do have to write your code in Delphi / Pascal.
On the other hand, all the Microsoft options are overly complicated and difficult to get working sensibly so I am pleased to avoid them. Corporate installers are good but incredibly expensive... so really there is no comparison. Ease of use, and free - what more could you ask for?
I should point out that I have absolutely no connection with the product other than that I have used it for many years for many products and have absolutely no complaints.
That depends on your needs.
Mostly you can just create an msi installer with an installer project type on VS.
The problem is that a lot of software distributors require an exe file type. For that you can use the free (limited ) edition of install shield : http://learn.flexerasoftware.com/content/IS-EVAL-InstallShield-Limited-Edition-Visual-Studio
It has everything that a standard installer needs and I use it to distribute my software.
I tried other free msi to exe programs but none of them worked well (this was a while a go and maybe things changed since then)

Creating Symbian application using .NET

Does tooling exist for Visual Studio that makes it possible to create a Symbian mobile application using .NET?
In the past, Visual Basic, VB.NET, and C# development for Symbian were possible through AppForge Crossfire, a plugin for Microsoft Visual Studio. On 13 March 2007 AppForge ceased operations; Oracle purchased the intellectual property, but announced that they did not plan to sell or provide support for former AppForge products. Net60, a .NET compact framework for Symbian, which is developed by redFIVElabs
http://en.wikipedia.org/wiki/Symbian#Other_languages
I guess RedFiveLabs (the maker of .NET for Symbian) is out of business. Except for links to their website, I can't find anything anymore from them. Their website is unreachable ( http://www.redfivelabs.com ) Their product is/was called Net60.
Silverlight is available for the S60 5th gen devices: http://www.silverlight.net/getstarted/devices/symbian/
Symbian itself is also almost dead, their Symbian^3 isn't good enough, and I guess Nokia put their bets on MeeGo (although I read somewhere that even Windows Phone 7 was an option).
This makes the development of anything for Symbian not really worthwhile, also since the current user base doesn't interact with the OVI appstore like users of other phone OS's.
AFAIK the only .NET platform is Windows.
There is also Mono for linu, but I am almost sure, that you can't code in c# for symbian.
There's an article on that here: http://www.danielmoth.com/Blog/net-compact-framework-on-symbian.aspx
It contains a link to an interesting article on porting the .NET Compact Framework to Symbian phones. http://www.jot.fm/issues/issue_2006_04/article4/
That article stated:
Our analysis shows that the specifics
of the Symbian OS and the resource
constraints of today’s smartphones
make porting difficult but not
impossible.
In other words, it's POSSIBLE but probably not worth your effort.

What software I'll need to become proficient in the Microsoft endorsed languages?

I have a free MSDN account and now that I am proficient in C/C++/Java, and know some JavaScript, PHP and MySQL, I want to learn some proprietary languages from Microsoft. I am looking to experiment with everything within the next several months - C#, ASP, VB, things I haven't even heard of [insert suggestions here], what have you.
However, I know nothing about the languages and the software that I need. I don't even know what .NET is.
I don't know if I should be downloading Visual Studio 2008 or Visual Studio .NET. I don't know if I need .NET Framework 1.1... there's just so much stuff on MSDN. I don't even know how begin to do any ASP... Please don't flame me.
I was hoping that with your help I can make a complete list of languages and software and start experimenting. Which framework do I need? Should I install a regular Windows, a professional version or a server? What do I need to do DB related stuff?
There are a lot of questions here and I would like to get an answer to each, so please contribute with whatever you can. I am devoting 2 days to downloading and researching the topic myself, but I would like some [professional] people input, because googling these things just isn't enough.
A good start would be Visual Studio 2008. This is the IDE and is the current version.
The installer will make sure that you have the correct versions of .NET installed, and also includes the database SQL Express.
You can install this on any version of Windows later than Windows XP Service Pack 2.
Since you come from a Java/C/C++ background, you may find C# most similar to what you are used to.
Personally, I would ignore VB.NET and look at F# next. However, that is not included in Visual Studio before 2010, but you can download a preview for free that works with Visual Studio 2008.
The express editions are a good start, they are free. the install should install any dependencies you need (the run time etc). There are plenty of other add ons (ASP.NET MVC is currently an add on for anything less than the 2010 beta of Visual Studio).
I included a link for the 2008 express editions which are the most current released versions
Visual Studio Express 2008
I agree w/ the poster who said you need to focus your efforts. First question: are you trying to learn this for developing for the web, or for desktop?
If Web, learn ASP.NET, if not, not.
Under ASP.NET, are you planning on just trying it out to get something up quickly, or do you want something more long-term, possibly leveraging your PHP/MySQL/JS skills? If the former, go for "regular" ASP.Net (aka Webforms), otherwise, go MVC (which will probably seem more familiar coming from PHP).
As far as languages, that comes down to preference, they're pretty interchangeable. I prefer C#, and if you're good at Java that may be true for you as well.
Tools, if you have an MSDN subscription, then Visual Studio 2008 Pro (or Team) is the way to go, get the latest SP's and you're up and running.
Paul
MS-SQL Server 2008 along with .Net 3.5 would be a couple of other suggestions that I think may be worth tossing out there. The SQL Server is Microsoft's relational DB that may be worth learning a little so that you could compare it to MySQL in some ways if you are into relational DB stuff. The .Net 3.5 is the latest version of the framework and may not be a bad idea to begin with some of the newer functionality within the framework with things like LINQ for example.

Coding Standard Wiki

At my place of work I've been put in charge of creating a coding standards document. Generally we follow what FxCop and StyleCop tools report to some degree but what we really require is document that will explain when to use a convention, why and maybe even a simple example.
This could be extended in the future for other purposes as well.
The first thing that came to my mind is to have an internal wiki site that we could build up and change easily over time but I've never used a wiki-based engine before and would like some recommendations.
If possible the engine should be in C# so we're able to tweak it to our needs if required.
If you think a wiki solution is the wrong way to go about this then please give an alternative :)
Update
I've just been informed, although we do have a php server it wont be staying, so I'm afraid php-based wiki ideas are off the table.
Update 2
Could you also (if possible) let me know if any of these solutions work with Active Directory?
Cheers
Tony
ScrewTurn Wiki is an free and open-source wiki made in C# and ASP.Net. Different database back-ends can be used, like MSSQL and MySQL, but also works without any database. It has several plugins to work with Active Directory.
Mindtouch Deki
Great wiki and it's built on C# and PHP, so you can use it on Mono or .NET
It also has Active Directory integration.
Download their ready-to-use VMware image. It started using it on my own PC then moved it to the company's VMware server when they had it ready.
We keep an internal wiki at my shop that has almost all of our documentation (not just coding standards). We didn't really see the need to roll our own so we just used MediaWiki...
We use JAMWiki and love it.
It is a solid application, we have had nothing but good interaction with both the application and the developers.
The guy you maintains the code does a great job answering questions and helping users out.
Brad Abrams has published an online set of C# coding standrds:
http://blogs.msdn.com/brada/articles/361363.aspx
If you go to the starter kits section of the Microsoft ASP.NET site, you will find several wikis to download such as ScrewTurn and Flexwiki. A wiki would be ideal for your needs by the sound of it :-)
I second MediaWiki. It's not C#, but it can be a nice excuse to sneak some free software in through the backdoor.
If you guys are a Microsoft shop, though, and are using Sharepoint, it has some built-in wiki-esque functionality.
In one project that I develop, I set up one MediaWiki wiki for development documentation, and one for online help.
I even generate part of the development documentation right from source code and database.
At the shop I'm at they use a commercial package which is really good: Confluence. What's especially nice is that it integrates with LDAP/AD so that you don't need a seperate login and it's build especially with business use in mind and has lots of free plugins. We couldn't live without it.
I am confused by what you mean when you say you don't have a php server. It runs on every platform known to man. I am noticing most Visual Studio Developers don't know that PHP runs on IIS.
I would go with mediawiki It has the biggest feature set and most add-ons developed for it in case you ever need to port your data elsewhere. If you need to modify your wiki you are doing it wrong.

Development resources for Mono on PS3

I have been considering taking the plunge and installing Linux on my Playstation 3. As C# is my current language of choice, the next logical step would be to install Mono.
I have done a little research and found that http://psubuntu.com/wiki/InstallationInstructions has instruction on installing Ubuntu and links to download an ISO containing a PS3 specific version of Ubuntu. There is also this cool project at http://code.google.com/p/celldotnet/ that has developed some code to utilize the 6 additional SPU cores of the CPU, not just the general-purpose one that you have access to by default.
The problem is that the project documentation seems a little thin. Has anyone set up a PS3 to develop .NET code? If so, what problems did you encounter? Does anyone have any code samples of how to even partially load up one of these monster processors?
Update:
I do realize that basic .NET/Mono programming will come into play here. The part I am fuzzy on is what sort of data structures do you pass to a specialty core? If I am reading this right, the 6 SPU cores have 128 registers at 128 bits each. I haven't seen any discussion on how to go about coding effectively for this.
Update 2:
IBM has announced that further development on the Cell processor has been cancelled. While this pretty much kills any desire I might have to develop on the platform, hopefully someone else might add some useful info.
Just found this posting from Miguel de Icaza's blog. Promising that as recently as Feb 2008 he was looking into this. As he is a member of the SO community now, I hope he can shed some further light on the topic.
The PS3 features a PPC general purpose CPU.
You can try to cross compile mono to ppc and go from there.
Mono from svn has received a lot of attention regarding the ppc port, so I would advise using it instead of the 2.0 release.

Categories

Resources