Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

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 ?

share|improve this question
    
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 Sep 26 '13 at 17:11
    
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 –  NNzz Sep 26 '13 at 17:22
    
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 S. Sep 29 '13 at 14:05

4 Answers 4

up vote 0 down vote accepted
+100

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 :)

share|improve this answer

If you install software on a single VM, then you can obtain as many copies as you like of it by creating a single appliance in .ova format, and then copying this machine to different pcs, or even to your own pc (you are asked whether you would like to change the machine name and its interfaces' MAC numbers at some point in the installation).

share|improve this answer
    
I won't install a single software, each virtual machine will actually have a "unique" configuration. e.g. 1 machine with Acrobat Reader 9 and Firefox 13, another with AR 2 and Firefox 21, and so on. The theory I am presenting here would allow me to create "installation bundle" for any software, I would just have to install it once on my specimen VM, to then be able to install it on any VM I want –  NNzz Sep 26 '13 at 17:19
    
@NNzz - Every example so far you have used requires access to the Windows registry. This isn't going to be possible with Windows the Linux VMs can use a script which while it requires the VM to be turned on can automate everything else. –  Ramhound Sep 26 '13 at 18:44
    
It is actually possible with hivex (cf. my original post) –  NNzz Sep 26 '13 at 22:43
    
Funny thing, this would be trivial if all of the OSes involved were Linuxes. You could use vdfuse to open the vdi file, and then loop-mount. From there you could cp the required files, then go to a chroot jail on the VM's root directory, and then install the required software. The operation could easily be scripted too. But in Winodws... –  MariusMatutiae Sep 27 '13 at 13:47

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

share|improve this answer

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.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.