passing msiexec command line params to a child process started by msiexec

2

I have a requirement to update config files with the command line provided arguments for some reason, the file is not being updated so I wrote a small utility app in c# to be started by msiexec. The intention is to get the commandline params to this app so that it would open the config file and update it during the course of installation.

My app was executed fine but when trying to read the parent process (msiexec) command line params, I get something like C:\windows\msiexec /V not the ones I specify on the msiexec command line (I'm not even using /V)

Any ideas about what could be the issue? If you have a better way to handle this please suggest.

Thanks.

Update:
Sorry for the confusion, I was using WiX installer and I start the WiX generated .msi on the command line as below for eg.

C:\> msiexec /I foo.msi ARG1="v1" ARG2="v2" 

ARG1 and ARG2 are defined in Wix installer script.

What I'm looking at is a way to access the command line params ARG1="v1", ARG2="V" by a small application which will be started by msiexec (the app is specified in Wix installer script as custom action).

Ideally, when I use xmlFile (tried xmlConfig as well), my WiX installer script should be able to update my config files with v1, v2 but its not happening so wrote an application that should be able to read v1 & v2 and write to the config file.

using xmlFile I get the following error:

ExecXmlFile: Error 0x8007006e: failed to load XML file: Error 25531. Failed to open XML file , system error: -2147024786 MSI (s) (E4!54) [18:11:36:714]: Product: -- Error 25531. Failed to open XML file , system error: -2147024786 –

Doesn't get any meaningful info. I used the msiexec argument /l*v to generate the logging.


Log excerpt:

Actually xmlFile should do my requirement but I get the following error while using it. Any help on this would be greatly appreciated.

MSI (s) (E4:00) [18:11:32:110]: Executing op: ActionStart(Name=ExecXmlFile,,) Action 18:11:32: ExecXmlFile.
MSI (s) (E4:00) [18:11:32:111]: Executing op: CustomActionSchedule(Action=ExecXmlFile,ActionType=3073,Source=BinaryData,Target=ExecXmlFile,CustomActionData=1030//cloudRecognition/connectiontype130//cloudRecognition/connectionaddress192.168.128.59;192.168.128.261030//cloudRecognition/connectionport50001;50001)
MSI (s) (E4:DC) [18:11:32:113]: Invoking remote custom action. DLL: C:\Windows\Installer\MSIA419.tmp, Entrypoint: ExecXmlFile
MSI (s) (E4:EC) [18:11:32:113]: Generating random cookie.
MSI (s) (E4:EC) [18:11:32:115]: Created Custom Action Server with PID 10104 (0x2778).
MSI (s) (E4:68) [18:11:32:402]: Running as a service.
MSI (s) (E4:68) [18:11:32:403]: Hello, I'm your 32bit Elevated custom action server.
ExecXmlFile:  Error 0x8007006e: failed to load XML file:
Error 25531. Failed to open XML file , system error: -2147024786
MSI (s) (E4!54) [18:11:36:714]: Product:  -- Error 25531. Failed to open XML file , system error: -2147024786

CustomAction ExecXmlFile returned actual error code 1603 (note this may not be 100% accurate if translation happened inside sandbox)

installation
wix
command-line-arguments
asked on Stack Overflow Nov 8, 2012 by user1810084 • edited Nov 11, 2012 by Alexey Ivanov

2 Answers

1

Are you passing the arguments as MSI properties? If yes, then you can read them from the MSI database. Check this:

http://www.alteridem.net/2008/05/20/read-properties-from-an-msi-file/

I am guessing you are setting environment specific application properties to the Config file? If so, why don't you have all the properties defined in the config file and make the application smart enough to read the right properties (by checking the environment)? I would do that.

Above comments are just based on the limited information you provided. You would have your own reasons to do so :)

answered on Stack Overflow Nov 8, 2012 by Isaiah4110 • edited Nov 11, 2012 by Alexey Ivanov
1

It seems to me that you need to add a CustomAction to your install process. You might need both or just one, depending of the request that you have.

  1. To Update Configuration files can you use XmlFile CustomAction, to change modify any XML file.
  2. To launch a Quiet Execution CustomAction

I believe that this will allow you to change the values of the configuration file during the installation. You can find a nice introduction to CustomActions and their types here. Have a look at the type 2 CustomAction.

 
Edit for follow question in Answer section:

When is the CA scheduled to launch during the installation process?
Do you have a log file for the install?

 
Re-edit

Without Code or more information about the installation process, I can't really help more.

Helpfull info would be:

  1. Where in the installation sequence is your CA launched?
  2. What WiX Element are you using to change the values in your file.
  3. Did you try to create an installer that does just the part that you are having trouble with, to isolate the behavior.
answered on Stack Overflow Nov 9, 2012 by CheGueVerra • edited Nov 11, 2012 by Alexey Ivanov

User contributions licensed under CC BY-SA 3.0