[Okta Webinar] Learn how to a build a cloud-first strategyRegister Now


Executing files from MSI

Posted on 2011-03-08
Medium Priority
Last Modified: 2012-05-11
Hi guys,

This is my first experience working this in depth with MSIs and below is the problem that I'm running into. I'm not finding much resolution for the error message 1721, so I'm hopeing someone here can help..

I am trying make the MSI launch Internet explorer browser on the users screen and display at statuspage.html that I have created and is hosted on my server.  I have added a type 51 CA to set a property value, then a type 50 in my MSI to call iexplore.exe and lauch a status page(Html) on that's hosted on my server via internet explorer on the users screen after the installation is complete.

I have read many pages about this and never seem to see any clear resolutions or there is very limited information about it.  Using the CAs I have added, I am able to successfully launch notepad.exe or cmd.exe etc..  basically any Exe thats listed in the c:\windows directory.  I am not able to launch Iexplore.exe from it's parent directory "C:\program files\Internet Explorer\iexplore.exe.  I get error 1721 which from what I can tell is an error with the command I'm using.  Here is the excerpt from the XML.

      <td>"[ProgramFilesFolder]Internet Explorer\IEXPLORE.exe"</td>
      <td>IExplore.exe http:\\statuspage.html</td>

I also have these 2 CAs listed as the 2 last tasks in the installExecuteSequence Just before finalizeinstallation so they are properly sequenced.

I have tried adding the internet Explorer directory in the system environment variables and have tried directing the MSI to the Internet explorer directory.  both unsuccessfully.  

I did notice however, If I copy Iexplorer,exe to the C:\windows directory, I am able to launch he browser with the specific page(statuspage.html).

How is the c:\Windows folder and the %Programfiles%\Internet Explorer\Iexplore.exe directories treated differently by the MSI or by windows?

What Am I missing here?  Also, how am I supposed to set the CAs to run in Deferred mode in XML formatting?

Question by:krstiles
LVL 40

Accepted Solution

Vadim Rapp earned 2000 total points
ID: 35073957
> How is the c:\Windows folder and the %Programfiles%\Internet Explorer\Iexplore.exe directories treated differently by the MSI or by windows?

c:\windows is usually part of the system Path, so any program there can be called by name. Program Files is not.

You can refer to environment variables using information from the article "Formatted" from Installer SDK. In this case, [%ProgramFiles] will work.

However, all this is probably what you don't want to do. One reason is that Internet Explorer may be not user's default browser. Then there also may be differences on 64-bit systems. It's better to invoke the URL directly, as if it was run from Start/Run, and let the system handle it. To do this, you can put custom action type 38, "run vbscript from embedded code", with the code like

CreateObject("WScript.Shell").run "http://www.experts-exchange.com"

That will do it.

Another thing you probably don't want to do is put this in the execute script. Execute script is supposed to run already without user interaction. Also, the user can deploy the package with switch /q, expecting it to be "quiet", and he won't be happy if your custom action still pops up. The right way to do it is to create the above custom action outside of any sequence at all, but instead specify it as one of the events linked to the button "Finish" on Exit Dialog, complete with some conditions (was it installation, uninstallation, or maintenance, etc.)


Author Closing Comment

ID: 35074682
Thank you very much.  I was looking at using shell script, but never thought to use VB imbedded.. leaning everyday!

Featured Post

How to Use the Help Bell

Need to boost the visibility of your question for solutions? Use the Experts Exchange Help Bell to confirm priority levels and contact subject-matter experts for question attention.  Check out this how-to article for more information.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Monitor input from a computer is usually nothing special.  In this instance it prevented anyone from using the computer.  This was a preconfiguration that didn't work.
In real business world data are crucial and sometimes data are shared among different information systems. Hence, an agreeable file transfer protocol need to be established.
Starting up a Project
Screencast - Getting to Know the Pipeline

834 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question