PDA

View Full Version : Installing 2.0 Framework silently from a silent install.



jed624
06-28-2007, 11:34 AM
I’ve run into a problem installing the 2.0 .NET Framework that has stumped me.

I’ve got a basic .msi project and I’m trying to avoid both the built-in 2.0 framework install that can be specified in the Release pane, and using a setup prerequisite.

So… I decided to create an InstallScript custom action that does a LaunchAppAndWait on dotnetfx.exe and passes the dot net installer the “install silently” arguments.

LaunchAppAndWait(SRCDIR ^ "dotnetfx.exe”, "/q:a /c:\"install /l /q\"", LAAW_OPTION_WAIT);

This custom action does successfully installs the 2.0 framework when launched normally, however when I run my setup in silent mode like this:

setup.exe /S /V”/qn” or setup.msi /qn – I can watch the 2.0 framework install start up in the task manager, but then it immediately exits. I’m logging the install and in the failure situation, there’s an MSI.LOG file produced – but I’ve been unable to locate any helpful information on the error.

MSI*.LOG

Error 2728.Table definition error: Component
=== Logging stopped: 6/28/2007 9:43:34 ===

In the dotnetfx log – there’s a couple lines that are missing from the log where the install fails:

dd_netfx*.txt (these lines show up in a successful log)

[06/28/07,09:27:24] (mscorwks.dll, mscorwks.dll) C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\TBD1314.tmp ( 2.0.50727.42 (RTM.050727-4200) ) ( Fri Sep 23 07:28:50 2005 ) Delete
[06/28/07,09:27:24] (mscoree.dll, mscoree.dll) C:\WINDOWS\system32\TBD1315.tmp ( 2.0.50727.42 (RTM.050727-4200) ) ( Fri Sep 23 07:28:52 2005 ) Delete

There’s also this difference in the dot_netfx log. When there’s a failure

Process returning code 1618

Vs. successful.

Process returning code 3010


The 1618 error code made me think I was running into the problem where one .msi installer can’t launch another, but running my setup non-silently installs the framework successfully – which has me confused. This is probably my fundamental misunderstanding of how Windows Installer works. :) Any ideas/explanations you can provide would be much appreciated.

Colbey
06-29-2007, 05:42 AM
I’m not familiar with install script, but is the custom action set to run in either the UI or Execute sequence?

If it is, the silent one will attempt to run the .Net install in the execute sequence and I would expect that to fail as you cant run 2 install execute sequences at the same time. It is possible to run a second installs UI and Execute sequences from within a UI sequence using a CA, so if your non silent install runs its CA in the UI sequence that’s why that one works. This is one of the reason that some form of bootstrapper is often used as it can be made to work in both silent and ui modes. Ive done this sort of thing using a custom setup prereq.

EDIT:
Oh btw error code 1618 is:

ERROR_INSTALL_ALREADY_
RUNNING 1618 Another installation is already in
progress. Complete that installation
before proceeding with this install.

http://support.microsoft.com/kb/229683

jed624
06-29-2007, 07:03 AM
Thank you - That must be it. I've got the CA in both the Execute and UI sections. Thank you for teaching me something new today. While I've seen things regarding bootstrappers, I hadn't researched the topic and was unaware that two installs in the Execute sequence was the crux of that need.

I'll probably have to come up with a different solution then - or go the setup prereq route. Thanks again for your response!

Jason

Kelter
11-04-2009, 02:31 PM
but using Basic MSI setup type, callting dotnetfx.exe from a "call and executable" (type 290) CA and getting 1721.

I've sequenced the ca in the UI sequence, because I can't launch another installation within the execute sequence. it's scheduled to run right after the dialogs (under certain conditions).

I'm doing it this way because the .NET Fx is only necessary in some cases, so we cannot require it. if there is another way to conditionally install the .NET Fx, let me know. otherwise, here are the details:

MSI (c) (3C:8C) [13:24:02:484]: Note: 1: 1721 2: InstDotNet 3: C:\DOCUME~1\mark\LOCALS~1\Temp\{<GUID>}\ 4: dotnetfx.exe

Working directory: SUPPORTDIR
Filename and command line: dotnetfx.exe
synchronous(check)
immediate
sequenced immediately following the dialogs within the UI seq.