Creating a Packaging deployment System...

Jun 28, 2010 at 5:20 PM
Edited Jun 28, 2010 at 5:21 PM
Hi all, I stumbled onto this library while researching the possibility of creating a simple network distribution packaging system for our products. Rather than rolling my own flavour of DotNetZip, can it do similar things to .NET's System.IO.Packaging.ZipPackage class? Basically what I'd like to do is push a custom package to a machine on the network. That package is digitally signed and self extracting and once it has extracted itself, it executes another exe, which exists within it. The embeded exe then does the job of of performing De-Registration of apps and services, backing up of current registry settings ( for aforementioned apps ) and backing up the affected application, possibly using the built in Windows command “Compact” to compress and archive the state of the previous application with that info or using DotNetZip. Then it would essentially perform something similar to copy deploy, with the new application and update the registry and re-register any affected services etc. If any errors occur it would reverse the process and re-instate the backed up app and its registry settings. I need a way to install a new version but also have the ability to back out that installation both at the time of the update or X day/weeks later, if we find a problem with the new release. I'm sure others have had similar issues and I'm wondering if DotNetZip can help in that regard or what other strategies other developers have used, or even commercial products. Thanks.
Coordinator
Jun 28, 2010 at 9:06 PM

If I were you I would research WIX and the MSI technology that is built-in to Windows.  I think MSI stands for Microsoft Installer; Microsoft has tackled the problem of installing software packages and has built quite a robust technology in support of it, including transactional installs, a standard User Interface, checking for pre-requisites, checking for required disk space, support for automated installs and rollbacks, and so on.  You can describe the install procedure in a set of rule files, which you can then compile with a tool.  There's a free WIX toolset; I think the rule compiler is called "Candle.exe". 

On the other hand, if you want a cheap-and-easy way to distribute archives and you already have the logic that updates the registry, checks for pre-requisites, and so on, you might consider using DotNetZip and the self-extracting archive to support your needs.  The SFX includes a "run on extract" option, where it will execute a program after extraction - that program could be one of the things that was just extracted.  In the program, which you would provide, you could do all the installer logic you described. DotNetZip doesn't help design or execute that - that is something you would have to provide. 

 

Jun 28, 2010 at 10:58 PM
Cheeso wrote:

If I were you I would research WIX and the MSI technology that is built-in to Windows.  I think MSI stands for Microsoft Installer; Microsoft has tackled the problem of installing software packages and has built quite a robust technology in support of it, including transactional installs, a standard User Interface, checking for pre-requisites, checking for required disk space, support for automated installs and rollbacks, and so on.  You can describe the install procedure in a set of rule files, which you can then compile with a tool.  There's a free WIX toolset; I think the rule compiler is called "Candle.exe". 

On the other hand, if you want a cheap-and-easy way to distribute archives and you already have the logic that updates the registry, checks for pre-requisites, and so on, you might consider using DotNetZip and the self-extracting archive to support your needs.  The SFX includes a "run on extract" option, where it will execute a program after extraction - that program could be one of the things that was just extracted.  In the program, which you would provide, you could do all the installer logic you described. DotNetZip doesn't help design or execute that - that is something you would have to provide. 

 

Hi Cheeso, 

  Thanks for your quick reply. We already use WIX and it does the job, most of the time, but we just want a simpler deployment strategy because we have over 600 machines we need to distribute to, and not all of them have the right version of MSI on them. So then we need a way to deploy the latest MSI installer to all these machines at a convenient time and simultaneously. We have not totally ruled out MSI, but it looks like we made need the technology we are trying to build to get it on all the machines in the first place.

 

The SFX with "run on extract" seems like the sort of thing I may need for this.