Install a software without booting a VM

1

0

My question may seem odd but I would like to know if it's possible to install a software without booting on the operating system of a virtual machine. I need to install a lot (I really mean A LOT) of different software configurations on different Windows virtual machines, and I was trying to find a way to automate this process, and to do it without starting the VMs, because my hardware ressources are not unlimited. I took at look at the installation process of some software, and most of them only seem to copy files at determined locations and modify the registry through adding keys and values.

So here is my theory, the one I would like you to approve/destroy, why not simply install a software on a "specimen" virtual machine, trace this installation using Install-Tracker for instance, log the changes in the registry with RegShot, and then through some scripting, apply the exact same changes using tools like libguestfs and hivex on a target VMDK/VDI. Here is the sequence I was thinking about :

[On the specimen VM]

  • Snapshot the registry
  • Install the software
  • Snapshot the registry
  • Get the install trace to a script that would copy all the files that have been deployed during the installation into a package

[On any system with which libguestfs is compatible (mostly UNIX)]

  • Copy all the files present in the package at the right place on the target VMDK/VDI using libguestfs and the install trace you obtained previously (involves scripting)
  • Apply the changes to the registry according to the snapshots (involves scripting)
  • Enjoy

Before starting, I would like to know if I am dreaming or if this theory may work. Really, that would save me up lots of time, but I'm not experienced enough on Windows OS to know if an installation can actually be "faked" that way. Or maybe you know a tool which already provides these features ?

user189857

Posted 2013-09-26T17:03:20.753

Reputation:

Are you going to have multiple VMs with the same setup? There are tools where you configure a Windows image to deploy the linux solution can be done with setup scripts. Both require the VMs to be powered of course. – Ramhound – 2013-09-26T17:11:30.230

No, each configuration will be unique. And I really need my VMs to be powered off (I'm talking about more than 500VMs here). So if I could bundle the installation of all the software I need and be able to install them directly on the VMDK, that would be great. Of course it would suggest I have to install all the software at least once on the specimen machine to know what's going on during the installation – None – 2013-09-26T17:22:26.287

This doesn't answer your specific question, but I would recommend you look into application virtualization. Bundle your apps into packages and run them whenever you want, without dirtying up the OS by installing them. Something like Cameyo (free) or Microsoft App-V (not so free). – Patrick Seymour – 2013-09-29T14:05:46.170

Answers

0

Since you've already got tools for (a) mounting NFTS from virtual drives and (b) importing registry keys in proper way, you should have no problem with deploying an offline installation of any software.

Unfortunately, there are several issues that would make it an extremely poor solution:

  • You will have to analyse each product thoroughly for registry changes and file modifications.
  • You will have to do it for each OS and architecture separately to get correct file and registry paths.
  • With each new version of the software, all the work will have to be done from scratch.
  • Since likely no one does it on a regular basis, you'll find no resources over Internet, neither out of the box solutions nor much help in debugging, if something unexpected happens.
  • Non-linear installations (ie. varying on environment, availability of prerequisites etc.) will be even more painfull.
  • Debugging will be nightmare.

So, long story short, it is possible, yet unlikely worth all the trouble.


Personally I would urge you to consider an alternative solution - a software deployment system that would install predefined software packages when the VM boots up.

The software will be deployed before user or service starts work, and at the same time, you will not have to boot up OS. You will just have to maintain packages and deploy them.

Personally, I use Wpkg deployment system with Wpkg-GP windows client (a service that runs at bootup using GPE mechanism). Wpkg itself is just a JScript application hosted on an SMB or Samba share - accessible to client machines.

You will have no problems with preparing files on your nix machine. Configuration and packages are stored in simple XML files. An XML package definition contains a set of instructions for the client to run - referring to installation files stored on the SMB share alongside Wpkg. You would still need some Windows VM for package tests, of course.

Wpkg website contains plenty of package definitions and a moderately large community maintaining them. As soon as you get accustomed to the simple XML syntax, you will have no problems creating packages on your own.

And with Wpkg you use original installers. You do not have to analyse them, you just read the software manual (or Google) and find all the necessary unattended/silent install options.

And, of course, Wpkg is free :)

Michał Sacharewicz

Posted 2013-09-26T17:03:20.753

Reputation: 1 944

0

The are several products for capturing one or more installations. These are based on scanning before and after both the hard disk and the registry and listing all changes.

One can capture one installation at a time. Or if you have several products that are always installed together, then with some products one can also capture them together.

Here are some products that I know :

InstallRite (freeware - old product, but works well for 32-bit)
Advanced Installer (shareware, tutorial here)
InstallAware (shareware, help here)
Total Uninstall (shareware)

It is best to capture the setup on a very virgin computer, perhaps a virtual machine.

It might also be interesting for you to have a look at the following free tools :

Ninite - Install and Update All Your Programs at Once
PickMeApp - software tool for transferring about a million personalized programs from one PC to another

harrymc

Posted 2013-09-26T17:03:20.753

Reputation: 306 093

0

YES and NO,

Some software you can, such as "Lotus Notes", "Oracle", some software you cannot, such as "Microsoft Office".

All depend if the software have some software protection features, "Online Activation", "Unique Registry key", "CPU ID / Hardware Recognition".

Normally a registry and file monitor log and redo on a mounted VM Disk can do the job, exclude those software protection features.

Have you consider automatic install scripts? something like macro-replay scripts to click the accept license button, and continue.

Or actually you can install the software first, then run Sysprep and then clone and activate ?

As long as you application can survive Sysprep, then the best way is completely configure a machine and then sysprep and clone, ps: "even Microsoft office will work". all you need is activation after first reboot.

user218473

Posted 2013-09-26T17:03:20.753

Reputation: