[wix-users] Windows Installer Repair Failure

Bob Arnson bob at firegiant.com
Mon Jul 27 20:41:58 PDT 2015


Or use Burn (which takes care of the caching) and don't embed the .cab in the .msi.

-----Original Message-----
From: wix-users [mailto:wix-users-bounces at lists.wixtoolset.org] On Behalf Of Colin Sim
Sent: Monday, 27 July, 2015 22:46
To: WiX Toolset Users Mailing List <wix-users at lists.wixtoolset.org>
Subject: Re: [wix-users] Windows Installer Repair Failure

So it seems the only option that is available to me then is:
1. Keep source MSI on local PC. This is kind of silly, since now I'll effectively have 3 copies of the same thing: actual installed files, cached copy, and source. Our package is currently at 1.7GB which will roughly equate to 5GB of storage required. On an upgrade, it'll probably need a few more copies wouldn't it so that it could roll back, etc. I know disk space is cheap but their speeds still aren't great. Further a lot of our environments are virtualised on lower end hardware which makes matter worse.
2. Have a dedicated network source that keeps all these files.

-----Original Message-----
From: wix-users [mailto:wix-users-bounces at lists.wixtoolset.org] On Behalf Of Bob Arnson
Sent: Tuesday, 28 July 2015 2:39 p.m.
To: WiX Toolset Users Mailing List <wix-users at lists.wixtoolset.org>
Subject: Re: [wix-users] Windows Installer Repair Failure

MSI doesn't use its cache as source. (It used to strip .msis before caching them. That changed in MSI 5.0 but it didn't change the behavior of not using the cache.)

-----Original Message-----
From: wix-users [mailto:wix-users-bounces at lists.wixtoolset.org] On Behalf Of Colin Sim
Sent: Monday, 27 July, 2015 22:28
To: WiX Toolset Users Mailing List <wix-users at lists.wixtoolset.org>
Subject: Re: [wix-users] Windows Installer Repair Failure

I have checked that the cached MSI (in our case anyway) is exactly the same size as the original. Further, if the cached version is stripped, how can it be used to meet its obligations for all maintenance operations?

I have reproduced the issue for only one of the components, but the upgrade log is still 42MB and I don't think I'll be allowed to upload it (at least the previous log I attached hasn't appeared on the mailing list yet). I'll paste snippets of log entries that I feel may be interesting below but please advise on what segments of the log you'll need to see whether the issue is a component authoring problem.

One thing I did forget to mention is that the installer is built with InstallShield 2011, if that matters.

[CostFinalize Section]
MSI (c) (68:5C) [13:41:58:337]: Disallowing installation of component: {C750EF8F-87DA-4610-8658-8C513E1F8529} since the same component with higher versioned keyfile exists

[MigrateFeatureStates Section]
Line 2145: MSI (c) (68:5C) [13:41:58:868]: Disallowing installation of component: {C750EF8F-87DA-4610-8658-8C513E1F8529} since the same component with higher versioned keyfile exists ...
Line 2262: MSI (c) (68:5C) [13:41:59:134]: Disallowing installation of component: {C750EF8F-87DA-4610-8658-8C513E1F8529} since the same component with higher versioned keyfile exists

[InstallWelcome Section]
MSI (c) (68:74) [13:42:06:634]: Disallowing installation of component: {C750EF8F-87DA-4610-8658-8C513E1F8529} since the same component with higher versioned keyfile exists

[First InstallValidate Section]
MSI (s) (34:30) [13:43:11:743]: Component: servicemanager.exe; Installed: Absent;   Request: Local;   Action: Null

[Second InstallValidate Section]
MSI (s) (34:48) [13:43:25:509]: Component: servicemanager.exe; Installed: Local;   Request: Absent;   Action: Absent

[InstallExecute Section]
MSI (s) (34:48) [13:43:40:368]: Executing op: UnregisterSharedComponentProvider(Component={C750EF8F-87DA-4610-8658-8C513E1F8529},ProductCode={FA2B343E-75B9-4EBB-A1C6-974E3B55775E})
MSI (s) (34:48) [13:43:40:368]: Executing op: ComponentUnregister(ComponentId={C750EF8F-87DA-4610-8658-8C513E1F8529},,BinaryType=0,)
1: {FA2B343E-75B9-4EBB-A1C6-974E3B55775E} 2: {C750EF8F-87DA-4610-8658-8C513E1F8529}
...
MSI (s) (34:48) [13:43:57:493]: Executing op: FileRemove(,FileName=servicemanager.exe,,ComponentId={C750EF8F-87DA-4610-8658-8C513E1F8529})
RemoveFiles: File: servicemanager.exe, Directory: F:\VMLocal\ MSI (s) (34:48) [13:43:57:493]: Verifying accessibility of file: servicemanager.exe ...
MSI (s) (34:30) [13:44:27:962]: Executing op: ComponentRegister(ComponentId={C750EF8F-87DA-4610-8658-8C513E1F8529},KeyPath=F:\VMLocal\servicemanager.exe,State=3,,Disk=1,SharedDllRefCount=0,BinaryType=0)
1: {F425F801-68DD-403F-969D-3E002677B7C2} 2: {C750EF8F-87DA-4610-8658-8C513E1F8529} 3: F:\VMLocal\servicemanager.exe

Cheers,
Colin

-----Original Message-----
From: wix-users [mailto:wix-users-bounces at lists.wixtoolset.org] On Behalf Of Blair Murri
Sent: Tuesday, 28 July 2015 12:20 a.m.
To: wix-users at lists.wixtoolset.org
Subject: Re: [wix-users] Windows Installer Repair Failure

I’ll tackle #5 first. When repair runs, the cached MSI that all maintenance operations run on (including repairs) is the “stripped” one that does not contain the files referenced from the File table. As a result, it cannot be used for adding/replacing files.


#1-3: the "embedded" uninstall uses a separate evaluation of what is being installed/removed. We would need to see that portion of the log to know exactly what is happening, but it is likely related to component rules being violated.


Blair Murri




Colin Sim Colin.Sim at ipfx.com
Sun Jul 26 15:25:16 PDT 2015 




  We use a PowerShell script to upgrade our development servers and our product is contained in a 1.7GB MSI file. The PowerShell script copies the package from a network share to the local %TEMP% directory, then executes the MSI in silent mode. Upon successful installation the copy of the MSI in the %TEMP% directory is removed.




On development servers, it is typical for developers to replace components that are installed through the MSI with components they build themselves - these components generally will have a higher version number than that installed by the MSI. As a result, here is the scenario on upgrade and subsequently the error:
1. When upgrading some components are marked as "leave alone" because they have a higher version number than the new package.
2. The upgrade process performs an uninstall, which removes all components of existing package (including those that were marked as "leave alone" - this must be a bug in the Windows Install!!!).
3. The upgrade process performs an install; however, does not install the components that were previously marked as "leave alone".
4. When we first run an application from our product Windows Installer detects the missing component(s) and triggers a repair.
5. The repair initiates using the cached MSI under C:\Windows\Installer. However, when it comes time to replace the missing component:
    i. it looks like the Windows Installer does another search for the MSI that contains the component (bizarre)
    ii. fails to find the original copy as it's already been deleted
    iii. finds the cached copy, which is already executing; hence locked, and pops up a dialog requesting the location of a source MSI file.




COME ON - THIS MUST TO BE A BUG!!!!





I have attached the full repair log, and snippets of what I thought were interesting below with my comments surround in square brackets.  I would appreciate any feedback and possible work around. I would presume (many) others would've come across something like this before.




[Cached copy of installer found]
Original package ==> C:\Windows\Installer\14a4210d.msi Package we're running from ==> C:\Windows\Installer\14a4210d.msi




[Not sure if this is a problem but seems weird to me] MSI (s) (20:54) [07:32:29:318]: APPCOMPAT: looking for appcompat database entry with ProductCode '{FA2B343E-75B9-4EBB-A1C6-974E3B55775E}'.
MSI (s) (20:54) [07:32:29:318]: APPCOMPAT: no matching ProductCode found in database.




MSI (s) (20:54) [07:32:29:709]: Package name retrieved from configuration data: 'IPFX Server Install.msi'




[Repairing around here]




[Time to replace missing component - this is when things go south] MSI (s) (20:54) [07:34:16:569]: Executing op: RegisterSharedComponentProvider(,,File=servicemanager.exe,Component={C750EF8F-87DA-4610-8658-8C513E1F8529},ComponentVersion=6.3.211.0,ProductCode={FA2B343E-75B9-4EBB-A1C6-974E3B55775E},ProductVersion=6.3.211,PatchSize=0,PatchAttributes=0,PatchSequence=0,SharedComponent=0,IsFullFile=0)
MSI (s) (20:54) [07:34:16:569]: Executing op: FileCopy(SourceName=SERVIC~1.EXE|servicemanager.exe,SourceCabKey=servicemanager.exe,DestName=servicemanager.exe,Attributes=16384,FileSize=3023656,PerTick=65536,,VerifyMedia=1,,,,,CheckCRC=0,Version=6.3.211.0,Language=5129,InstallMode=59113472,,,,,,,)
MSI (s) (20:54) [07:34:16:585]: File: C:\VMLocal\servicemanager.exe;      To be installed; Won't patch;      No existing file
MSI (s) (20:54) [07:34:16:600]: Resolving source.
MSI (s) (20:54) [07:34:16:600]: User policy value 'SearchOrder' is 'nmu'
MSI (s) (20:54) [07:34:16:600]: User policy value 'DisableMedia' is 0 MSI (s) (20:54) [07:34:16:600]: Machine policy value 'AllowLockdownMedia' is 0 MSI (s) (20:54) [07:34:16:600]: SOURCEMGMT: Media enabled only if package is safe.
MSI (s) (20:54) [07:34:16:600]: SOURCEMGMT: Looking for sourcelist for product {FA2B343E-75B9-4EBB-A1C6-974E3B55775E}
MSI (s) (20:54) [07:34:16:600]: SOURCEMGMT: Adding {FA2B343E-75B9-4EBB-A1C6-974E3B55775E}; to potential sourcelist list (pcode;disk;relpath).
MSI (s) (20:54) [07:34:16:600]: SOURCEMGMT: Now checking product {FA2B343E-75B9-4EBB-A1C6-974E3B55775E}
MSI (s) (20:54) [07:34:16:600]: SOURCEMGMT: Media is enabled for product.
MSI (s) (20:54) [07:34:16:600]: SOURCEMGMT: Attempting to use LastUsedSource from source list.
MSI (s) (20:54) [07:34:16:600]: SOURCEMGMT: Trying source C:\Users\shanep\AppData\Local\Temp\.




[The original copy which no longer exists] MSI (s) (20:54) [07:34:16:600]: Note: 1: 2203 2: C:\Users\shanep\AppData\Local\Temp\IPFX Server Install.msi 3: -2147287038 MSI (s) (20:54) [07:34:16:600]: SOURCEMGMT: Source is invalid due to missing/inaccessible package.
MSI (s) (20:54) [07:34:16:600]: Note: 1: 1706 2: -2147483647 3: IPFX Server Install.msi MSI (s) (20:54) [07:34:16:600]: SOURCEMGMT: Processing net source list.
MSI (s) (20:54) [07:34:16:600]: Note: 1: 1706 2: -2147483647 3: IPFX Server Install.msi MSI (s) (20:54) [07:34:16:600]: SOURCEMGMT: Processing media source list.
MSI (s) (20:54) [07:34:17:725]: Note: 1: 2203 2:  3: -2147287037 MSI (s) (20:54) [07:34:17:725]: SOURCEMGMT: Source is invalid due to missing/inaccessible package.
MSI (s) (20:54) [07:34:17:725]: Note: 1: 1706 2: -2147483647 3: IPFX Server Install.msi MSI (s) (20:54) [07:34:17:725]: SOURCEMGMT: Processing URL source list.
MSI (s) (20:54) [07:34:17:725]: Note: 1: 1402 2: UNKNOWN\URL 3: 2 MSI (s) (20:54) [07:34:17:725]: Note: 1: 1706 2: -2147483647 3: IPFX Server Install.msi MSI (s) (20:54) [07:34:17:725]: Note: 1: 1706 2:  3: IPFX Server Install.msi MSI (c) (BC:B0) [07:34:17:741]: User policy value 'SearchOrder' is 'nmu'
MSI (c) (BC:B0) [07:34:17:741]: User policy value 'DisableMedia' is 0 MSI (c) (BC:B0) [07:34:17:741]: Machine policy value 'AllowLockdownMedia' is 0 MSI (c) (BC:B0) [07:34:17:741]: SOURCEMGMT: Media enabled only if package is safe.
MSI (c) (BC:B0) [07:34:17:741]: SOURCEMGMT: Prompting user for a valid source.
MSI (c) (BC:B0) [07:34:17:741]: Machine policy value 'DisableBrowse' is 0 MSI (c) (BC:B0) [07:34:17:741]: Machine policy value 'AllowLockdownBrowse' is 1 MSI (c) (BC:B0) [07:34:17:741]: SOURCEMGMT: Browsing is enabled.
MSI (c) (BC:B0) [07:34:17:772]: Font created.  Charset: Req=0, Ret=0, Font: Req=MS Shell Dlg, Ret=MS Shell Dlg MSI (c) (BC:B0) [07:34:17:772]: Machine policy value 'DisableUserInstalls' is 0 MSI (c) (BC:B0) [07:34:17:772]: SOURCEMGMT: Now checking product {FA2B343E-75B9-4EBB-A1C6-974E3B55775E}
MSI (c) (BC:B0) [07:34:17:788]: SOURCEMGMT: Media is enabled for product.
MSI (c) (BC:B0) [07:34:17:788]: SOURCEMGMT: Attempting to use LastUsedSource from source list.
MSI (c) (BC:B0) [07:34:17:788]: Note: 1: 1706 2:  3: IPFX Server Install.msi MSI (c) (BC:B0) [07:34:17:788]: SOURCEMGMT: Processing net source list.
MSI (c) (BC:B0) [07:34:17:788]: Note: 1: 1706 2: -2147483647 3: IPFX Server Install.msi MSI (c) (BC:B0) [07:34:17:788]: SOURCEMGMT: Processing media source list.
MSI (c) (BC:B0) [07:34:17:788]: SOURCEMGMT: Trying media source DISK1;1.
MSI (c) (BC:B0) [07:34:17:788]: Note: 1: 1706 2:  3: IPFX Server Install.msi MSI (c) (BC:B0) [07:34:17:788]: SOURCEMGMT: Processing URL source list.
MSI (c) (BC:B0) [07:34:17:788]: Note: 1: 1402 2: UNKNOWN\URL 3: 2 MSI (c) (BC:B0) [07:34:17:788]: Note: 1: 1706 2: -2147483647 3: IPFX Server Install.msi MSI (c) (BC:B0) [07:34:17:788]: Note: 1: 1706 2:  3: IPFX Server Install.msi




[Eventually finds cached copy, which is what's executing] MSI (c) (BC:B4) [07:45:23:837]: SOURCEMGMT: Trying source C:\Windows\Installer\14a4210d.msi.
MSI (c) (BC:B4) [07:45:23:868]: Note: 1: 2203 2: C:\Windows\Installer\IPFX Server Install.msiMSI (s) (20:BC) [07:45:33:305]: Running as a service.
MSI (s) (20:E4) [07:45:33:727]: Running as a service.
MSI (s) (20:E4) [07:45:33:743]: Generating random cookie.
MSI (s) (20:E4) [07:45:33:743]: Created Custom Action Server with PID 4764 (0x129C).
MSI (s) (20:BC) [07:45:33:868]: Running as a service.
MSI (s) (20:BC) [07:45:33:868]: Hello, I'm your 32bit Impersonated custom action server.
MSI (s) (20:E4) [07:45:54:399]: Server locked. Will skip uninstalled package cleanup, and allow locking install to perform cleanup.
MSI (s) (20:B4) [07:46:45:837]: Running as a service.
MSI (s) (20:B4) [07:46:45:837]: Entering CMsiConfigurationManager::SetLastUsedSource.
MSI (s) (20:B4) [07:46:45:837]: Specifed source is not already in a list.
MSI (s) (20:B4) [07:46:45:837]: User policy value 'SearchOrder' is 'nmu'
MSI (s) (20:B4) [07:46:45:837]: Machine policy value 'DisableBrowse' is 0 MSI (s) (20:B4) [07:46:45:837]: Machine policy value 'AllowLockdownBrowse' is 1 MSI (s) (20:B4) [07:46:45:837]: Adding new sources is allowed.
MSI (s) (20:B4) [07:46:45:837]: Added new source 'C:\IPFX\' with index '2'
MSI (s) (20:B4) [07:46:45:837]: Set LastUsedSource to: C:\IPFX\.
MSI (s) (20:B4) [07:46:45:852]: Set LastUsedType to: n.
MSI (s) (20:B4) [07:46:45:852]: Set LastUsedIndex to: 2.
MSI (s) (20:54) [07:46:45:868]: SOURCEMGMT: Now checking product {FA2B343E-75B9-4EBB-A1C6-974E3B55775E}
MSI (s) (20:54) [07:46:45:868]: SOURCEMGMT: Media is enabled for product.
MSI (s) (20:54) [07:46:45:884]: SOURCEMGMT: Attempting to use LastUsedSource from source list.
MSI (s) (20:54) [07:46:45:884]: SOURCEMGMT: Trying source C:\IPFX\.
MSI (s) (20:54) [07:46:45:915]: SOURCEMGMT: Resolved source to: 'C:\IPFX\'
MSI (s) (20:54) [07:46:45:915]: PROPERTY CHANGE: Adding SourceDir property. Its value is 'C:\IPFX\'.
MSI (s) (20:54) [07:46:45:915]: PROPERTY CHANGE: Adding SOURCEDIR property. Its value is 'C:\IPFX\'.
MSI (s) (20:54) [07:46:45:915]: PROPERTY CHANGE: Adding SourcedirProduct property. Its value is '{FA2B343E-75B9-4EBB-A1C6-974E3B55775E}'.
MSI (s) (20:54) [07:46:45:915]: SOURCEDIR ==> C:\IPFX\ MSI (s) (20:54) [07:46:45:915]: SOURCEDIR product ==> {FA2B343E-75B9-4EBB-A1C6-974E3B55775E}
MSI (s) (20:54) [07:46:45:946]: SECREPAIR: CryptAcquireContext succeeded MSI (s) (20:54) [07:46:45:946]: Determining source type MSI (s) (20:54) [07:46:45:946]: Source type from package 'IPFX Server Install.msi': 0 MSI (s) (20:54) [07:46:45:962]: SECREPAIR: Hash Database: C:\Windows\Installer\SourceHash{FA2B343E-75B9-4EBB-A1C6-974E3B55775E}
MSI (s) (20:54) [07:47:16:305]: Source for file 'servicemanager.exe' is compressed
3: -2147287038
MSI (c) (BC:B4) [07:45:23:868]: SOURCEMGMT: Source is invalid due to missing/inaccessible package.
MSI (c) (BC:B4) [07:45:23:868]: Note: 1: 1706 2: -2147483647 3: IPFX Server Install.msi MSI (c) (BC:B4) [07:45:23:947]: Font created.  Charset: Req=0, Ret=0, Font: Req=MS Shell Dlg, Ret=MS Shell Dlg




MSI (c) (BC:5C) [07:46:45:758]: SOURCEMGMT: Trying source C:\IPFX.
MSI (c) (BC:5C) [07:46:45:837]: Cloaking enabled.
MSI (c) (BC:5C) [07:46:45:837]: Attempting to enable all disabled privileges before calling Install on Server MSI (c) (BC:5C) [07:46:45:837]: Connected to service.
MSI (c) (BC:B0) [07:46:45:868]: SOURCEMGMT: Resolved source to: 'C:\IPFX\'
MSI (s) (20:54) [07:47:16:337]: SOFTWARE RESTRICTION POLICY: Verifying object --> 'C:\IPFX\IPFX Server Install.msi' against software restriction policy MSI (s) (20:54) [07:47:16:337]: SOFTWARE RESTRICTION POLICY: C:\IPFX\IPFX Server Install.msi has a digital signature MSI (s) (20:54) [07:47:29:930]: SOFTWARE RESTRICTION POLICY: C:\IPFX\IPFX Server Install.msi is permitted to run at the 'unrestricted' authorization level.




This e-mail contains IPFX information which may be privileged or confidential and is intended for use only by the individual(s) or entity named above. If you are not the intended recipient, note that disclosing, copying, distributing or using this information is prohibited. If you have received this e-mail in error, please advise immediately to the e-mail address above and permanently delete this message and any attachments. Please note that any views or opinions presented in this email are solely those of the author and do not necessarily represent those of the company. We monitor our e-mail system and may record your e-mails. Thank you.

____________________________________________________________________
WiX Toolset Users Mailing List provided by FireGiant http://www.firegiant.com/

____________________________________________________________________
WiX Toolset Users Mailing List provided by FireGiant http://www.firegiant.com/

____________________________________________________________________
WiX Toolset Users Mailing List provided by FireGiant http://www.firegiant.com/

____________________________________________________________________
WiX Toolset Users Mailing List provided by FireGiant http://www.firegiant.com/


More information about the wix-users mailing list