Link to home
Start Free TrialLog in
Avatar of Elmo_Oxygen
Elmo_Oxygen

asked on

Customizing MSI file for Group Policy installation--hitting a wall

Hi folks-

I'm working with a vendor MSI file that I'm desperately trying to get GP-ready so I can push it out to my Win7 clients.

I've tried using Orca and Inst Edit! to manually edit and also create transforms. There are two obstacles I'm trying to overcome:

1) a prompt with 3 radio buttons asking for the installation type

User generated image
2) a prompt asking for a server name string that comes up a few seconds AFTER the "Install" button has been clicked. This server name then gets edited into "ELNSDMViewer.exe.config" and installation is complete.

User generated image
No luck trying to set the unwanted features to "Level 0" and I'm unable to find where to enter the server name. Nothing obvious inside the Property or other tables.

User generated image
Any help, much appreciated.
ASKER CERTIFIED SOLUTION
Avatar of Vadim Rapp
Vadim Rapp
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
See whether the command line running the .msi with a /a option.  That option will provide you with the answer file that can be included with the .msi  
.msi /? There are option to include answer files, the issue is whether that option is available/included...
arnold, option /a for msi file invokes administrative installation. There's no such thing as answer file for msi, from what I know. Where did you get this from?
The administrative install if available places the install file in a state that can be run out if GPO software deployment.
The answers selected during that set are included in the location to which it is installed.

Software deployment adds /silent /q.

Some msi include options to generate the answer file.
Avatar of Elmo_Oxygen
Elmo_Oxygen

ASKER

Correct, /a just invokes the admin install. No answer file.

I searched inside the Control table for "server" which just returns the generic controls for "The InstallShield(R) Wizard will create a server image of [ProductName] at a specified network location. To continue, click Next." and "Specify a network location for the server image of the product."

Are certain MSI's inflexible in that a hands-free installation can't be achieved? I wonder if I should look into an MSI packager like the old WINinstall app.
You have to see whether the MSI installer uses/references an option to create an answer/unattended.
When you run the MSI, look in %temp% see what is there.

You have to provide the transform/answer file for unattended install.  The variables/parameters must match what the forms are looking for.

Confused two separate things. can you run the application from a network share?

see whether the msi /? provides parameterrs that can be passed to it to answer the parameters or use an MST file that includes the parameters with their respective answers.

http://www.klaus-hartnegg.de/gpo/mst.html

msiexec /?
some msi/exe's include the option to run the installer interface only to get responses ........
> Are certain MSI's inflexible in that a hands-free installation can't be achieved? I wonder if I should look into an MSI packager like the old WINinstall app.

Yes, some are, but usually everything can be achieved by specifying right properties in the command line.

> I searched inside the Control table for "server"

No, it's unlikely that you would find it like that.
Go to the table "Dialog" and find the dialog "Server Name". Don't search for anything, do it visually.
Once you found it, go to the table "Control" , sort by column "Dialog_" and review all controls belonging to that dialog, also visually.

Alternatively, you can simply upload that MSI right here (rename .msi to .txt to bypass E-E security feature) and we will take a look, it probably will take 1/10 of time compared to explaining how to do it.
Getting closer! I ran a manual installation with the /lime switch to create a verbose log file. At least I narrowed down the location of the prompt for the server name entry to the CustomAction table. Here is the originnal embedded VBscript asking the user to input the server name string:

         
Dim path  ,windPath,servername,copyServerName


Set WshShell = CreateObject("WScript.Shell") 
  
servername = Session.Property("SNAME")
If servername="" then 
servername=InputBox("Enter the Server Name","Server  Name")
End If

'servername=InputBox("Enter the Server Name","Server  Name")

copyServerName=servername
copyServerName=Trim(copyServerName)

if copyServerName="" then 
   Session.Property("SNAME")=""
else
   Session.Property("SNAME")=servername
end if
                 

Open in new window

I modified the vbscript to explicitly state servername="server.domain.com".

The last thing is to force the "Client" option for the installation...
Arnold,
1. I guess the author is in better position to decide what can and what can't be shared.
2. He could make administrative installation and upload only the msi without the files.
Do you have an opportunity to contact the vendor to see whether they have a transform file format that can be used with their installer to automate/distribute the application?

They may have info/writeup to achieve this.
From the script, it looks like the property is SNAME, but it may be something else, for example remains from some old days before they put up separate dialog, and now the property may be different. The most reliable is to find the control that actually works and find the property it's linked to.

Another way is to specify, say, server name MYSERVER999, then analyze installation log and find out which property had value MYSERVER999.

Yet another way is to look where this server name goes into, i.e. whether it's being put into registry key, or something else. For example, if server name is placed into registry, then that registry value in the installation will be specified as [property-name]. That will be the property to modify.

Finally, if in your deployment you are going to specify one and same server name for all installations, the easiest is to simply replace that [property-name] for the hardcoded server name you want.
Sorry for not being clear, but I was able to modify the original vbscript above and explicitly state the server name.  That worked. So 1 out of 2 solved.

All that remains is forcing the "Client" option. Perhaps it's within reach. I believe this section of the ControlEvent table is key:

User generated image
Look for these custom actions - InstallClient, etc - find out what they do.
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
I would simply remove them and left determination to the standard means. If the actual installation is being done by the standard means, rather than by those custom actions themselves, and custom action only patch the levels of the features, it should work.
I've requested that this question be deleted for the following reason:

Not enough information to confirm an answer.
The topic of the question was hitting a wall while customizing the installation. The discussion did show quite a few techniques to do that, and the author has confirmed that he found the answer using one of them - he found the custom action script where the property is assigned. His second problem is only the matter of choosing which of the several suggested ways to use.

Split between
https:#a40981038
and
https:#a40982606