How to best implement software updates on windows? [closed] - windows

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 9 years ago.
I want to implement an "automatic update" system for a windows application.
Right now I'm semi-manually creating an "appcast" which my program checks, and notifies the user that a new version is available. (I'm using
NSIS for my installers).
Is there software that I can use that will handle the "automatic" part of the updates, perhaps similar to Sparkle on the mac? Any issues/pitfalls that I should be aware of?

There's now a Windows port of Sparkle, see http://winsparkle.org.

There is no solution quite as smooth as Sparkle (that I know of).
If you need an easy means of deployment and updating applications, ClickOnce is an option. Unfortunately, it's inflexible (e.g., no per-machine installation instead of per-user), opaque (you have very little influence and clarity and control over how its deployment actually works) and non-standard (the paths it stores the installed app in are unlike anything else on Windows).
Much closer to what you're asking would be ClickThrough, a side project of WiX, but I'm not sure it's still in development (if it is, they should be clearer about that…) — and it would use MSI in any case, not NSIS.
You're likely best off rolling something on your own. I'd love to see a Sparkle-like project for Windows, but nobody seems to have given it a shot thus far.

Google Chrome auto-update is based on Omaha:
http://code.google.com/p/omaha/
Their overview has a great section on why it was needed:
The browser typically prompted the user with a long series of techy, confusing and scary dialogs all trying to convince the user not to install. Then the user was prompted with a wizard filled with choices that they did not need to or know how to decide amongst. These factors combined to form a bad user experience and large drop-off during the app installation process

It's a good idea to use a third-party solution, cause autoupdates can be a pain, especially with Windows Vista/7 (UAC). For what it's worth, the product my company uses is AutoUpdate+ and it seems to work fairly well.

For .NET, a while back Microsoft Patterns + Practices published the Application Updater Block. This was (to my mind) rather overblown and over-engineered, but did the job quite well.
In essence it used a "stub loader" to check a manifest and a Web service to see if a later version of the program than the one installed was available, then used the BITS background downloader technology to download a new version if one was available on the server.
Once the new version was downloaded and installed (with .NET this is as simple as an xcopy to the relevant folder), the application would update the manifest. The next time the program was loaded the new version would be launched.
While the Patterns + Practices code is .NET specific, there's nothing there that couldn't be copied for a non-.NET application, especially if you have the ability to silently run the install process in the background.

If your application is written in .Net, you could try ClickOnce. However, it's difficult to perform administrative or custom actions during install using this approach.

wyUpdate looks really nice. See video here:
http://wyday.com/wybuild/help/automatic-updates/

For .NET applications you might want to have a look at NetSparkle, a Sparkle variant for .NET programs. It is pretty new (from 2011) and developed actively.

Just came here from an answer to my own question on the same subject - I mention one other updating solution in my question. It uses a stub loader, and an xml file to point to the latest executable.

Related

What are the advantages / disadvantages of a Cloud-based / Web-based IDE? [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 11 years ago.
I'm writing this as DevConnections in Las Vegas is happening. Visual Studio 2010 has been released and I now have this 3GB beast installed to my machine. (I'll admit, it has some nice features.)
However, while the install was monopolizing my computer's resources I began to wish that my IDE worked more like Google Documents (instantly available, available anywhere, easy to share, easy to collaborate, naturally versioned).
A few Google (and StackOverflow) searches led me to :
Coderun
Bespin
I'm well aware that these IDE's are missing a lot of what exists in VS 2010. However, that isn't my question. Instead, I'm wondering what benefits a web-based IDE might have? Assuming a company invests the time to create the missing features, what is the downside?
Benefits:
Code available anywhere an internet connection is available
Simple sharing mechanisms
Simplified build mechanism
Many modern IDE features available (Autocomplete, syntax highlighting, etc...)
Requires a modern browser
Drawbacks:
Code is only available where an internet connection is available
Requires a modern browser (this might be an issue in some corporate settings)
Simplified build mechanism
At the mercy of the latency gods
No native debugger
No choice of revision-control
No clear backup solution
No clear way to fully remove source code from the provider's servers
No support available
No choice over maintenance schedule of servers
No control over IDE or environment features and tools
Must trust provider's security and privacy controls
As you can see, many of its benefits are also potential drawbacks. So I think the use of a browser-based IDE is very project dependent.
However, IMHO, I don't think browser-based IDEs have enough features or provide enough necessary services to replace desktop IDEs in most modern enterprises.
Just being devils advocate here and listing the disadvantages:
Disconnection!
The fact that you don't really own any software - if you stop paying the monthly bills you can't access it any more but you can keep using offline installed products after the initial payment.
Big / valuable projects may be uncomfortable not having their source code tucked away inside a network they control - one hacked account and their main IP is out on the net.
Limited extension ecosystem - with online services there is generally a control over it like facebook for example, but nobody tells resharper what features they can include
Forced upgrade - big corporations are still running .net 2.0 (.net 4 just came out). They can be slow to move and being forced to use the latest and greatest version of the app could be a too fast a pace for them.
Exposed to bugs - some people have wierd personal rules like they dont touch v1 software. If you always have the latest version you are exposing yourself to being hit by productivity consuming errors (security updates are a different category to feature updates but still if you are running desktop software you can isolate your security exposure and decide your own reasons to upgrade)
Interoperability - perhaps your app works with another app - they might not be able to keep up with the release pace of the main app and the interoperability functionality might lag while the other developers play catch up.
Centralised point of failure - no control over backups, redundancy, etc - its in the hands of the developers of the service.
Personally I find cloud based services very convenient and as time goes on now that I have a laptop and a desktop and a work computer and my friends have computers it becomes a chore to sync data between the lot. At the current stage we are still dealing with toy apps on the web but hopefully in a few years Silverlight will put a big dent in that.
The web is inheritly less featureful than a native application. Also, how do you compile and test out your code? No sane web host will let strangers compile, run, and test their code on their servers.
Besides "ubiquitous" availability (note the quotes), you get the "benefit" of editing code on the server. So, you get to skip many of the deployment steps that are necessary for many server side apps today. There's a simplicity of editing code like you'd edit a blog, but it can also be a curse as well. You still need a way to separate development from production.
But that said, if you use the Blog or many CMS applications, millions of folks use "Web based IDES" every day, so there's obviously applicability for specific application areas. I can tell you there are times I wish fixing a quick bug on a deployed app were as simply as clicking an "edit" button.

Best Practices for Software Organization [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 9 years ago.
Background: I'm a windows developer at MegaCorp(tm) and I am getting new hardware soon.
Question: Are there best practices around setting up my developer software installs?
Details: I've got my main IDE (Visual Studio/SQL Management Studio), but there are also tools that I'm testing out, additional tools I can't live without, and future accomodations.
All my code is stored on a remote server in SourceSafe so I don't need to really accommodate for that, but I'll regularly jump into perl/python/php for separate/side tasks.
The only advice I can give you is set up your machine in a way you need it and you can work with and then save an image so that you can return to that state easily.
Also, don't forget to go and get all your SysInternals goodies. Oh, also remember to export your rss feeds before you upgrade.
You should also install the Windows SDK (which usually doesn't come with VS), as there are many useful tools there that can help during development.
If you plan to use .NET, look into Reflector and LINQPad.
If you plan to use ASP.NET or do any web development at all, look into Fiddler and Firebug
Use a VM image, then the project has a VM image that is version controlled.
Tools and OS are recoverable years later.
Your name will shine on asa voice of sanity and configuration management.
Get rid of SourceSafe
Seriously, don't store anything in SourceSafe. There are many other, better Version Management Systems out there. What's wrong with SourceSafe? I strongly urge you to consider reading the following posts:
http://www.codinghorror.com/blog/archives/000660.html
http://www.highprogrammer.com/alan/windev/sourcesafe.html
http://www.developsense.com/testing/VSSDefects.html
Especially the last one - it goes into lots of detail about the problems with VisualSourceSafe. What should you use instead? Wikipedia has a great comparison of many different Version Management Systems for you to compare. You can look here to find out which ones integrate nicely with Visual Studio.
vim - VI Improved
Beyond Compare - best diff tool.
If you use multiple machines (like
one for dev one for test)
Synergy is invaluable.
If you occasionally need to edit
icons Paint.NET is pretty good.
As everyone else says kill source safe.
I have to agree regarding SourceSafe, whether or not you have the ability to opt-out of using it or not will obviously affect your ability to addopt a new SCM tool but if you can I highly recommenf the free VisualSVN Server for managing subversion and / or hosting repositories.
If you are prepared to pay for the licence you can also buy the VisualSVN plugin for visual studio, as a student I can't afford that but I have used AnkhSVN which integrates with VS through the source control provider APIs providing a nice native looking interface in VS 08
Other tools I can't live without:
TestDriven.NET
DocProject for easy generation of MSDN-style code documentation. I believe it uses sandcastle to do the real work but sandcastle itself is difficult to use and this is the most sane UI over it I've seen and managed to get working without massive amounts of work.
Paint.NET for graphics work
TortoiseSVN is another really good SVN client that I use for doing things like merging to trunk because I am more familiar with the interface and I think it's nicer than AnkhSVN in some areas

Alternatives to Applescript? [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
When it comes to scripting the Mac, are there alternatives to Applescript? Its API seems awesome, but the language itself, from what I've read so far, seems aimed more at non-programmers.
Insights into this would be greatly helpful.
(At the moment, I'm thinking of writing a tiling window manager for the Mac.
Yes, I know some exist, but this will be open source.
Yes, I know of Xmonad, but it only does X11 windows.)
Thanks!
When it comes to scripting the Mac, are there alternatives to Applescript?
Depends what you want to do. If you want to send Apple events to other applications, yes; for running scripts from OSA-aware applications (Mail rules, folder actions, etc.), not really.
The best technical alternative is appscript (my baby), which is available for Python, Ruby and Objective-C on 10.4+. (There's also a MacRuby version, but I've yet to do a public release of that.) Feature-wise appscript's slightly better than AppleScript and its application compatibility is very nearly as good. Third-party project, so you'll need to install it yourself (but that's easy enough as long as you've got Xcode) and MIT licensed so you can redistribute it as needed (e.g. included in your application bundle). Fairly decent tool and documentation support, including an online book by Matt Neuburg, with mailing list support for the Python and Ruby versions and direct email support for the others.
The 'official' alternative is Apple's Scripting Bridge. The API looks very Cocoa-like, but that's really just a lot of smoke and mirrors which ultimately makes it less capable than AppleScript and significantly more prone to application compatibility problems (and tricky to troubleshoot when it does go wrong). Tool, documentation and community support is not so great either (appscript's is better; AppleScript's is better still). SB's main advantage is that it's included in 10.5+ so requires no additional installation to use. I wouldn't recommend it for heavy-duty automation work due to its technical shortcomings, but for modest automation tasks involving obliging apps it may suffice.
Other bridges do exist (e.g. Perl's Mac::Glue, RubyOSA), but they are not as capable, popular and/or actively supported.
All that said, if you want to do any serious application scripting, you will still have to learn AppleScript as that's where you'll find the vast bulk of literature, sample scripts and community expertise. All of which you will need, since the great majority of scriptable applications are notoriously under-documented.

What is the best installer? [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 13 years ago.
Poll: What is the best and easy to use installer to use with .NET 3.5 SP1 windows applications?
My vote is for:
Nullsoft Scriptable Install System - it's popular, easy to use and FREE
Nullsoft Scriptable Install System
(NSIS) is a script-driven Windows
installation system with minimal
overhead backed by Nullsoft, the
creators of Winamp. NSIS has risen to
popularity as a widely used
alternative to commercial and
proprietary products like
InstallShield. - Wikipedia
There is rich plugins directory for NSIS, where you can find for example a plugin for installing windows services.
http://nsis.sourceforge.net/Category:Plugins
Commercial alternatives:
InstallShield - probably the most popular one and the most expensive option
Wise - also very popular
Advanced Installer - new and nice, not that popular yet, but trending
Other:
WiX - could be very good if you can spent some time on the learning curve. It is used by many Microsoft products.
Inno Setup
List of Installation Software at Wikipedia
My personal preference is Advanced Installer, it has a nice GUI for creation and editing of projects which are XML files so fits into source control easily.
Innosetup is the fastest one I've used to make setup files quickly and easily (out of Nullsoft and VS), providing you get the designer that is a separate download.
In the past I've used both InstallShield and Wise. I wouldn't say that using either of them is a joy, but they get the job done for large Windows applications.
Of the two, I would generally favour InstallShield.
I very much like WiX, which is said to be the installer used by MS internally for Office.
I used NSIS on my first-and-last Windows project, and was quite happy with it.
You could use ClickOnce deployment, if your environment allows you to do so. (If it's convenient).
Actually any answer could apply to your question here, choosing the "right" installer never possible for "a windows application".
How many different machines are your going to install to?
How large is your application?
Does it have many dependencies? (Databases etc.)
What is the "level" of the users who are going to install your app? Are they system administrators who install apps for a living, or are they joe-random "Hey lets click install because it looks cool" types.
just my 2ct.
The one out of the box from Visual Studio 2008.
Nullsoft Scriptable Install System anytime... simply because of it's ease of use and more than that, it's free!

Best Windows Installation file Creator? [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 11 years ago.
I'm not the best programmer so I found it was much easier to write a program as several separate executables, which occasionally call each other. But now I need an easy way to actually run them without writing detailed instructions like Run file one, wait until its completed and no longer in process manager before running file two, file three can be executed 15 seconds after file two has been created. Then Add a key to your registry. Etc. I figure there must be a good software out there where I can just drop all my exes in, tell it when to run them, and output one file for my clients to run. Any ideas?
Inno Setup is easy to use, free, open source and scriptable if you need it.
I've always had a good experience with NSIS
It's open source
It has a big community (and hence lots of plugins)
For simple things, its script-based approach is nice and easy
It's lightweight and fast
On the downside, if you want to do something more sophisticated, you need to use something that looks a bit like assembly language - very odd, and not particularly pleasant. Thanks for the comments about that - I'd forgotten all about it!
Inno Setup is simple, light-weight and covers a lot of ground. I've used it for 5-6 apps over the last 5 years and it never let me down. Highly recommended!
Before that I used InstallShield, which is one of these systems that are so complicated that they "offer" you to "utilize" their "professional services" to create your installations. In other words it's kind of a hack that only managed to build a customer base in the childhood of Windows because there was no competition. It's a bit like a 747 that runs like a Trabant.
The worst, by far, installer product I've worked with is "WISE for Windows Installer". This had me literally smash my mouse in the office floor in frustration. It is (or at least was, 4 years ago) utter crap and should be avoided at all costs. This is exactly the kind of software that those pesky license agreements are there for, else the publisher would be sued into oblivion...
Yes, two ideas:
If you're looking for a way to statically put files, registry keys, start menu shortcuts, et cetera on your customer's systems, you should be looking for an installer solution. Many of these exist, and choosing the best one mostly comes down to features and pricing. I happen to like Caphyon's Advanced Installer, and it does have a freeware version that looks like it might meet your needs, except for the ability to run executables at scheduled times (which would require the Windows Task Scheduler support only found in the Enterprise edition, which is in the ultra-expensive price range, comparable to InstallShield...)
If controlling the flow of events on your customer's systems is more important than getting the executables on the system, you may want to look into Automise, which is basically an ultra-friendly UI for creating scripts, which makes things like scheduling tasks quite easy.
Anyway, you can download trial editions of both pieces of software, to see which one (or possibly both) will allow you to do what you want in the easiest way, or at least give you some ideas on how to best serve your customers. It may turn out that simply adding a new, 'supervisor' executable to take care of registry keys, scheduling, etc. could solve the problem without any third-party add-ons...
WixEdit is an open source (install shield like) authoring tool that uses the Wix Runtime from Microsoft.
Wix Tutorials
If you don't have any specific requirements apart from being able to install a few executables, then basically anyone will do. I'd recommend NSIS, not because it is particularly easy to work with (it has a cumbersome assembly-like language which isn't to practical to do more complex things in), but because it is free, has a large and active community, and it generates fast installers with very low overhead. As an extra bonus, you can run the compiler (i.e. the tool which generates the installer) on Linux.
Edit: ...and whatever you do, do NOT use InstallShield.
The ones I've worked with are:
InstallShield
NSIS
INNO Setup
Custom created installer
My preference is INNO Setup. It's free, it's easy.
I heart wix, MSFT's open source, declarative (XML) based toolkit for building MSIs.
It's ace.
If you want to install binaries, add reg keys and even run "custom actions" (have your own code execure during install) you should have a look at it. Then you'll have a one-click (msi) solution. Good eh?
Definately Wix. :)
Wix allows you to do the most things with ease and the difficult things without hacks, it's free and open-source.
You can use Wix within Visual Studio (using Votive) or you can use it using the .Net SDK, MSBuild and your favorite XML editor. Wix supports creating MSI installers, MSP patches, MSM Merge modules, Wix libraries and much more.
You should take a look at InstallJammer. Not only is it free, it's cross-platform and very easy to use. Most common actions don't require any scripting at all, but with a powerful scripting language underneath the hood, you can make an install do just about anything you want.
If all you want is a basic installer to install your application, you can have it built in a matter of minutes from the first time you start it up. If you want something more powerful, the capabilities and documentation are excellent.
If you're not after an installer (which is doesn't sound like you are) Why not just write a program to do what you need?

Resources