cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
DavidL
Level 3

Chained .MSI not installing - What's wrong?

Added the ASP.NET 2.0 AJAX Extensions 1.0 MSI as a chained msi to an installer package that is also installing an ASP.NET web site. The AJAX msi had no install conditions and is not installed on the target machine.

At runtime I get the following lines in the log file:

MSI (s) (6C:84) [16:16:26:081]: Doing action: ISChainPackagePrepare
Action ended 16:16:26: caExtractIISSuppFiles. Return value 1.
MSI (s) (6C:70) [16:16:26:097]: Invoking remote custom action. DLL: C:\WINDOWS\Installer\MSI471.tmp, Entrypoint: ISChainPackages
Action start 16:16:26: ISChainPackagePrepare.
MSI (s) (6C:84) [16:16:26:237]: Doing action: InstallInitialize
Action ended 16:16:26: ISChainPackagePrepare. Return value 1.
MSI (s) (6C:84) [16:16:26:237]: Machine policy value 'AlwaysInstallElevated' is 0
MSI (s) (6C:84) [16:16:26:237]: User policy value 'AlwaysInstallElevated' is 0
MSI (s) (6C:84) [16:16:26:237]: Embedded Chainer - Searching for a valid Embedded Chainer to run
MSI (s) (6C:84) [16:16:26:237]: Embedded Chainer - Skipping chainer: ISChainPackagesPost (condition is false)
MSI (s) (6C:84) [16:16:26:237]: BeginTransaction: Locking Server
MSI (s) (6C:84) [16:16:26:237]: SRSetRestorePoint skipped for this transaction.
MSI (s) (6C:84) [16:16:26:237]: Server not locked: locking for product {9D3A068A-BFE5-48C2-87F0-66C8E731C59C}
Action start 16:16:26: InstallInitialize.
MSI (s) (6C:84) [16:16:26:331]: Doing action: ISChainPackageRollback
Action ended 16:16:26: InstallInitialize. Return value 1.
MSI (s) (6C:84) [16:16:26:347]: Note: 1: 2205 2: 3: MsiPatchCertificate
MSI (s) (6C:84) [16:16:26:347]: LUA patching is disabled: missing MsiPatchCertificate table
Action start 16:16:26: ISChainPackageRollback.
MSI (s) (6C:84) [16:16:26:347]: Doing action: ISChainPackageCommit
Action ended 16:16:26: ISChainPackageRollback. Return value 1.
Action start 16:16:26: ISChainPackageCommit.
MSI (s) (6C:84) [16:16:26:347]: Doing action: AllocateRegistrySpace
Action ended 16:16:26: ISChainPackageCommit. Return value 1.

When I look in the MsiEmbeddedChainer table in the Direct Editor, I see that the condition for ISChainPackagesPost is "IS_CHAINER_POST_COMMANDLINE AND NOT ISCHAINER". I was not able to find either of these two properties getting set in the log file.

Other miscenenous notes:
- Target OS is Windows Server 2003 SP2 Standard Edition
- Windows Installer 4.5 is installed (and rebooted)
- Rest of the installation install successfully and installed ASP.NET site works
- I've tried both streaming the file and running directly from [SOURCEDIR] with the file on DISK1
- ASP.NET AJAX MSI installs just fine running quitely and with full UI
- No other errors in the log file
- ASP.NET AJAX installs just fine


Any help would be greatly appreciated and I thank you in advanced 🙂
Labels (1)
0 Kudos
(7) Replies
yamakamyar
Level 6

Have you tried to sign the package? This might have caused your rollback. It is looking for a certificate it cannot find.

Take a look at: http://msdn.microsoft.com/en-us/library/aa370342(VS.85).aspx
0 Kudos
MichaelU
Level 12 Flexeran
Level 12 Flexeran

I would normally expect to see more information in the log around ISChainPackagePrepare, particularly indications of which chained packages will or won't be installed. When a package will be installed, this action will set the IS_CHAINER_POST_COMMANDLINE property accordingly. Is this excerpt from a verbose log, created with /l*v or MsiLogging=voicewarmup? (If not, try creating one to see if there is further information.)
0 Kudos
DavidL
Level 3

MichaelU wrote:
I would normally expect to see more information in the log around ISChainPackagePrepare, particularly indications of which chained packages will or won't be installed. When a package will be installed, this action will set the IS_CHAINER_POST_COMMANDLINE property accordingly. Is this excerpt from a verbose log, created with /l*v or MsiLogging=voicewarmup? (If not, try creating one to see if there is further information.)


I am positive the the MSIEXEC executed with Verbose logging and MsiLogging=voicewarmup. As I mentioned in the OP, there is no mention of IS_CHAINER_POST_COMMANDLINE anywhere in the log. Is there any other behaviour that would cause IS_CHAINER_POST_COMMANDLINE to not be set?

Attached is the full log excerpt.
0 Kudos
MichaelU
Level 12 Flexeran
Level 12 Flexeran

I looked more closely at our code, and we fail to log the case that neither Install nor Remove conditions evaluate to true - I'll get this fixed up but at least it tells us where to look. (If no package is being installed or removed, we don't set IS_CHAINER_POST_COMMANDLINE so it won't appear in the log.) What are the conditions for your chained package(s)?
0 Kudos
DavidL
Level 3

MichaelU wrote:
I looked more closely at our code, and we fail to log the case that neither Install nor Remove conditions evaluate to true - I'll get this fixed up but at least it tells us where to look. (If no package is being installed or removed, we don't set IS_CHAINER_POST_COMMANDLINE so it won't appear in the log.) What are the conditions for your chained package(s)?


Just the standard "Not Installed". I've also tried with no condition at all with the same result. Ultimately, I'd like to tie installing this when the user picks a certain feature, but obviously I haven't gotten that far.

Interestingly, I can get two other .MSIs from Microsoft to act properly. Trying with the ASP.NET AJAX Web Extensions 1.0, it does not seem to complete the following sets as was done for AMO (Microsoft Analysis Services Management Objects)

Is there anything I can edit in the AJAX MSI to make it act nice?

Thanks

The following is what it looks like when I chain the the AMO .MSI:

MSI (s) (6C:C0) [16:07:16:505]: Doing action: ISChainPackagePrepare
Action ended 16:07:16: caExtractIISSuppFiles. Return value 1.
MSI (s) (6C:04) [16:07:16:520]: Invoking remote custom action. DLL: C:\WINDOWS\Installer\MSIB83.tmp, Entrypoint: ISChainPackages
Action start 16:07:16: ISChainPackagePrepare.
InstallShield 16:07:16: Marking chained package AMO2008 for installation
InstallShield 16:07:16: Extracting temp files for chained package AMO2008 to 'C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\{C97EB0FE-AF71-4C47-A8E3-DC710D0A82B9}'
InstallShield 16:07:16: Extracting file 'C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\{C97EB0FE-AF71-4C47-A8E3-DC710D0A82B9}\SQLSERVER2008_ASAMO10.msi' for chained package AMO2008
InstallShield 16:07:16: Marking chained package AMOMD2008 for installation
InstallShield 16:07:16: Extracting temp files for chained package AMOMD2008 to 'C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\{D1B22A7D-4040-45C8-B9B9-2B4BB9DFFAF0}'
MSI (s) (6C!90) [16:07:16:849]: PROPERTY CHANGE: Adding IS_CHAINER_POST_COMMANDLINE property. Its value is '/l"c:\log.log" /qb /iC:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\{C97EB0FE-AF71-4C47-A8E3-DC710D0A82B9}\SQLSERVER2008_ASAMO10.msi /qb /iC:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\{D1B22A7D-4040-45C8-B9B9-2B4BB9DFFAF0}\SQLSERVER2008_ASADOMD10.msi'.
MSI (s) (6C!90) [16:07:16:849]: PROPERTY CHANGE: Adding ISChainPackageCommit property. Its value is 'C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\{C97EB0FE-AF71-4C47-A8E3-DC710D0A82B9} C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\{D1B22A7D-4040-45C8-B9B9-2B4BB9DFFAF0}'.
MSI (s) (6C!90) [16:07:16:849]: PROPERTY CHANGE: Adding ISChainPackageRollback property. Its value is 'C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\{C97EB0FE-AF71-4C47-A8E3-DC710D0A82B9} C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\{D1B22A7D-4040-45C8-B9B9-2B4BB9DFFAF0}'.
InstallShield 16:07:16: Extracting file 'C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\{D1B22A7D-4040-45C8-B9B9-2B4BB9DFFAF0}\SQLSERVER2008_ASADOMD10.msi' for chained package AMOMD2008
MSI (s) (6C:C0) [16:07:16:849]: Doing action: InstallInitialize
Action ended 16:07:16: ISChainPackagePrepare. Return value 1.
MSI (s) (6C:C0) [16:07:16:849]: Machine policy value 'AlwaysInstallElevated' is 0
MSI (s) (6C:C0) [16:07:16:849]: User policy value 'AlwaysInstallElevated' is 0
MSI (s) (6C:C0) [16:07:16:849]: Embedded Chainer - Searching for a valid Embedded Chainer to run
MSI (s) (6C:C0) [16:07:16:849]: Embedded Chainer - Scheduled to run after install
MSI (s) (6C:C0) [16:07:16:849]: BeginTransaction: Locking Server
0 Kudos
MichaelU
Level 12 Flexeran
Level 12 Flexeran

This isn't adding up. Have you examined the built msi to ensure the records you expect are in the ISChainPackage table? (It's not documented per se, but it's a direct mapping from what the view shows you.) Have you tried running this on another machine with the same behavior? If yes to both, can you share a copy with me to diagnose?

There are a number of gotchas with chaining, including that if a reboot is pending, chaining will be skipped; and if a package is already installed it won't generally be reinstalled. But even in those cases, we should still see the package scheduled or explicitly skipped in the log file.
0 Kudos
DavidL
Level 3

MichaelU wrote:
This isn't adding up. Have you examined the built msi to ensure the records you expect are in the ISChainPackage table? (It's not documented per se, but it's a direct mapping from what the view shows you.) Have you tried running this on another machine with the same behavior? If yes to both, can you share a copy with me to diagnose?

There are a number of gotchas with chaining, including that if a reboot is pending, chaining will be skipped; and if a package is already installed it won't generally be reinstalled. But even in those cases, we should still see the package scheduled or explicitly skipped in the log file.


Turns out ASP.NET AJAX does not do a good job cleaning the registry on uninstall. After deleting all component GUID reference in the registry, the ASP.NET AJAX MSI installed as expected.

Oh well. Thanks so much for all your help. At the very least maybe someone else wont' have to go through this same issue with AJAX.

Thanks again
0 Kudos