Problems packaging an MSI
I have a small program that I need to deploy to about 300 machines and I would like to do this with SCCM. The program is already in MSI format, but I'm having trouble figuring out how to make this unattended.
It has about 5 "NEXT" buttons to hit, a license agreement to accept, a server name to input and a password to input twice.
This program will also register 2 services once finished installing.
I've tried a few 3rd party packaging programs but they are not working. I just finished trying WinInstallLE and although it installs the program, it does not register the services when finished.
I have not found a clear answer anywhere on how to do this if the program is already in MSI format. Everything I'm readying is assuming I already know how to do this. I'm a complete novice and need some assistance from step 1.
Thanks in advance.
It has about 5 "NEXT" buttons to hit, a license agreement to accept, a server name to input and a password to input twice.
This program will also register 2 services once finished installing.
I've tried a few 3rd party packaging programs but they are not working. I just finished trying WinInstallLE and although it installs the program, it does not register the services when finished.
I have not found a clear answer anywhere on how to do this if the program is already in MSI format. Everything I'm readying is assuming I already know how to do this. I'm a complete novice and need some assistance from step 1.
Thanks in advance.
0 Comments
[ + ] Show comments
Answers (12)
Please log in to answer
Posted by:
Arminius
12 years ago
Next Buttons are usually handled by using the Q[x] switch.
The license agreement is generally handled in a couple of ways - sometimes the q[x] switch handles it. Otherwise, there is a public property to set to something like "yes" or "agree". Orca or an MSI editing tool can help you find the property to set and the value it looks for. It's usually called "AGREETOLICENSE" or "ACCEPTEULA". Those will be in the property table.
If it's a straight MSI, the 2 password entries should also be public properties as well as the server name. The MSI should also handle the service registrations - are you getting some kind of message after installation to handle? This should be able to be installed via a command line without a need for a packaging tool since it's an MSI already.
If you're completely new to packaging, you have a couple of options: 1. contact the vendor and get some help with the command line for this application. Some vendors have good help with respect to that. Others don't understand what you're asking and give you a blank stare when you ask. 2. Read the Phil Wilson text that you can find here at App Deploy, get an editing tool, and gain some familiarity with using it. That's how a lot of packagers got started in it - we started fiddling with the processand learned from our mistakes. ORCA is free, but it's also more challenging to use than a tool such as AdminStudio or WISE. Also, if you aren't familiar with it already, learn MSIEXEC syntax. (Sorry if I'm going too basic here; I'm reading that by "complete novice" you mean "I've never done this before and want to learn")
The license agreement is generally handled in a couple of ways - sometimes the q[x] switch handles it. Otherwise, there is a public property to set to something like "yes" or "agree". Orca or an MSI editing tool can help you find the property to set and the value it looks for. It's usually called "AGREETOLICENSE" or "ACCEPTEULA". Those will be in the property table.
If it's a straight MSI, the 2 password entries should also be public properties as well as the server name. The MSI should also handle the service registrations - are you getting some kind of message after installation to handle? This should be able to be installed via a command line without a need for a packaging tool since it's an MSI already.
If you're completely new to packaging, you have a couple of options: 1. contact the vendor and get some help with the command line for this application. Some vendors have good help with respect to that. Others don't understand what you're asking and give you a blank stare when you ask. 2. Read the Phil Wilson text that you can find here at App Deploy, get an editing tool, and gain some familiarity with using it. That's how a lot of packagers got started in it - we started fiddling with the processand learned from our mistakes. ORCA is free, but it's also more challenging to use than a tool such as AdminStudio or WISE. Also, if you aren't familiar with it already, learn MSIEXEC syntax. (Sorry if I'm going too basic here; I'm reading that by "complete novice" you mean "I've never done this before and want to learn")
Posted by:
petergriffon
12 years ago
Thank you, and I don't mean to sound rude here....but this is the type of answer I'm finding. You are assuming I know what a .mst file is, how to create one, and how to use one. I have absolutely no idea how this works. I have repackaged EXE files as MSI's and it works great.....but I have no idea how to do this with an existing MSI.
Do you have any more in debth information or articles I can read?
Do you have any more in debth information or articles I can read?
Posted by:
petergriffon
12 years ago
Yes, complete novice and need to learn. thank you.
I've actually checked out ORCA and managed to get the license agreement to default to accept, but i've populated the fields for server name and password and they are both still blank.
I'll check out that article and the other tools you mentioned.
Thank You again
I've actually checked out ORCA and managed to get the license agreement to default to accept, but i've populated the fields for server name and password and they are both still blank.
I'll check out that article and the other tools you mentioned.
Thank You again
Posted by:
Arminius
12 years ago
Not that I'm trolling for points, but if an answer at this forum does help you, feel free to rate the post.
If you're using ORCA, keep in mind that you'll need to generate the transform; otherwise you are changing your MSI.
If you're interested in packaging, to get a good start, Google "best practices in application packaging". That can help you avoid a lot of mistakes that new packagers make and also will give you some good pointers. I scanned the first article (the Dell one) and it looked like a good entry point. You've got a good start here - try stuff, see what you know and don't know, do a little research, and post your questions. There are some very knowledgeable folks here who have probably forgotten more than I'll ever know about packaging who seem glad to help, provided some basic research (ie Google your question) has been done.
Best wishes.
If you're using ORCA, keep in mind that you'll need to generate the transform; otherwise you are changing your MSI.
If you're interested in packaging, to get a good start, Google "best practices in application packaging". That can help you avoid a lot of mistakes that new packagers make and also will give you some good pointers. I scanned the first article (the Dell one) and it looked like a good entry point. You've got a good start here - try stuff, see what you know and don't know, do a little research, and post your questions. There are some very knowledgeable folks here who have probably forgotten more than I'll ever know about packaging who seem glad to help, provided some basic research (ie Google your question) has been done.
Best wishes.
Posted by:
dunnpy
12 years ago
If you're getting blank details where you think the fields are, it seems that that information maybe stored in another property.
Install manually entering your required details and create an installation log during install - msiexec /i mymsi.msi /l*v c:\<pathtologfile>\<nameoflogfile.log>
Then you'll have to wade through the log, looking for the server name, for example, and see where it says 'property changed' as to which property it is stored in.
As Arminius said, make sure you generate a transform for these modifications, leaving the vendor MSI unedited (Transform > New Transform and then Transform > Generate Transform when you've added your changes)
Run on a commandline - msiexec /i mymsi.msi TRANSFORMS=mytransform.mst /qn
Hope that helps,
Dunnpy
Install manually entering your required details and create an installation log during install - msiexec /i mymsi.msi /l*v c:\<pathtologfile>\<nameoflogfile.log>
Then you'll have to wade through the log, looking for the server name, for example, and see where it says 'property changed' as to which property it is stored in.
As Arminius said, make sure you generate a transform for these modifications, leaving the vendor MSI unedited (Transform > New Transform and then Transform > Generate Transform when you've added your changes)
Run on a commandline - msiexec /i mymsi.msi TRANSFORMS=mytransform.mst /qn
Hope that helps,
Dunnpy
Posted by:
petergriffon
12 years ago
Posted by:
petergriffon
12 years ago
I had high hopes for that, but it's still not working. I created the log and sorted through it searching for the word license, my server name, and my password. I found all of the fields, then using orca, created an MST file. Unfortunately it's still not installing.
I also tried a trick that I saw somewhere else by running the arguments in the command prompt, example:
msiexec.exe /i mymsi.msi AGREETOLICENSE=YES SERVICESSTARTTYPE=auto SERVER_HOSTNAME=xxx.xxx.com SERVICES_PASSWORD=xxxxxx /quiet
I can see msiexec.exe running for about 5-6 minutes, then it disappears without anything being installed.
I see this at the end of the log file
MSI (s) (2C:30) [12:22:26:731]: Note: 1: 1708
MSI (s) (2C:30) [12:22:26:731]: Product: XXXX-- Installation operation failed.
Any other ideas?
I also tried a trick that I saw somewhere else by running the arguments in the command prompt, example:
msiexec.exe /i mymsi.msi AGREETOLICENSE=YES SERVICESSTARTTYPE=auto SERVER_HOSTNAME=xxx.xxx.com SERVICES_PASSWORD=xxxxxx /quiet
I can see msiexec.exe running for about 5-6 minutes, then it disappears without anything being installed.
I see this at the end of the log file
MSI (s) (2C:30) [12:22:26:731]: Note: 1: 1708
MSI (s) (2C:30) [12:22:26:731]: Product: XXXX-- Installation operation failed.
Any other ideas?
Posted by:
dunnpy
12 years ago
Those arguments in CAPITALS relate to the public properties in the Property Table that you've modified in ORCA with an MST.
Try running the commandline with the arguements without the /quiet, or /qn and step through the installation that way - if those properties are correct it *should* pre-populate those fields in the dialogues they relate to as you run through.
What application is it? If it is a fairly common app someone may have already produced an MST and they could share how they performed the customisations.
Dunnpy
Try running the commandline with the arguements without the /quiet, or /qn and step through the installation that way - if those properties are correct it *should* pre-populate those fields in the dialogues they relate to as you run through.
What application is it? If it is a fairly common app someone may have already produced an MST and they could share how they performed the customisations.
Dunnpy
Posted by:
petergriffon
12 years ago
It's called Tripwire, which I found on this site. Here are the switches I found here: (I only need to accept the EULA, enter server name and password. The only thing that is populating using these switches is the server name. The EULA is still set to No by default, and the password fields are blank.)
ACCEPT_EULA=[true|false]
INSTALLDIR=<install_path>
INSTALL_FIPS
INSTALL_RTM=[true|false]
RTMPORT=<Event_Generator_port>
SERVICES_PASSWORD=<services_password>
START_AGENT=[true|false]
TE_PROXY_HOSTNAME=te_proxy_hostname>
TE_PROXY_PORT=<teproxy_port>
TE_SERVER_HOSTNAME=<server_host>
TE_SERVER_HTTP_PORT=<http_port>
TE_SERVER_PORT=<server_port>
ACCEPT_EULA=[true|false]
INSTALLDIR=<install_path>
INSTALL_FIPS
INSTALL_RTM=[true|false]
RTMPORT=<Event_Generator_port>
SERVICES_PASSWORD=<services_password>
START_AGENT=[true|false]
TE_PROXY_HOSTNAME=te_proxy_hostname>
TE_PROXY_PORT=<teproxy_port>
TE_SERVER_HOSTNAME=<server_host>
TE_SERVER_HTTP_PORT=<http_port>
TE_SERVER_PORT=<server_port>
Posted by:
Arminius
12 years ago
You've got the MSIEXEC syntax correct; I'agree with Dunnpy to run it without the quiet switch and see what happens. Doing that, your command would look like msiexec.exe /i mymsi.msi AGREETOLICENSE=YES SERVICESSTARTTYPE=auto SERVER_HOSTNAME=xxx.xxx.com SERVICES_PASSWORD=xxxxxx Then you can see if those boxes are populated or not.
If you really feel ambitious, you can dig through all that log. quite often the action that happens before Resultcode=3 is what fails. Question: are all the prerequisites installed on the workstation? I'd check that as a general rule when installs fail.
When running with the syntax above, you should get an error code. Note that and check it here: [link]http://desktopengineer.com/windowsinstallererrorcodes[/link] . That will help you get an idea fo what fails.
If you really feel ambitious, you can dig through all that log. quite often the action that happens before Resultcode=3 is what fails. Question: are all the prerequisites installed on the workstation? I'd check that as a general rule when installs fail.
When running with the syntax above, you should get an error code. Note that and check it here: [link]http://desktopengineer.com/windowsinstallererrorcodes[/link] . That will help you get an idea fo what fails.
Posted by:
petergriffon
12 years ago
Rating comments in this legacy AppDeploy message board thread won't reorder them,
so that the conversation will remain readable.
so that the conversation will remain readable.