问题
This is a follow-up on this question, which was solved by locating the installation package on a local drive.
Unfortunately, it seems that on some machines, this doesn't solve it.
I have the following log available
=== Verbose logging started: 03.07.2013 23:17:03 Build type: SHIP UNICODE 4.05.6001.00 Calling process: C:\WINDOWS\system32\msiexec.exe ===
Resetting cached policy values
Machine policy value 'Debug' is 0
******* RunEngine:
******* Product: C:\myInstallation.msi
******* Action:
******* CommandLine: **********
Machine policy value 'DisableUserInstalls' is 0
User policy value 'SearchOrder' is 'nmu'
User policy value 'DisableMedia' is 0
Machine policy value 'AllowLockdownMedia' is 1
SOURCEMGMT: Looking for sourcelist for product {88D5305B-8FC3-4197-8482-5383FC7683ED}
SOURCEMGMT: Adding {88D5305B-8FC3-4197-8482-5383FC7683ED}; to potential sourcelist list (pcode;disk;relpath).
SOURCEMGMT: Now checking product {88D5305B-8FC3-4197-8482-5383FC7683ED}
SOURCEMGMT: Attempting to use LastUsedSource from source list.
SOURCEMGMT: Trying source C:\Documents and Settings\user123\Local Settings\Temporary Internet Files\Content.IE5\FALCNH9A\.
Note: 1: 2203 2: C:\Documents and Settings\user123\Local Settings\Temporary Internet Files\Content.IE5\FALCNH9A\myInstallation[1].msi 3: -2147287037
SOURCEMGMT: Source is invalid due to missing/inaccessible package.
Note: 1: 1706 2: -2147483647 3: myInstallation[1].msi
SOURCEMGMT: Processing net source list.
Note: 1: 1706 2: -2147483647 3: myInstallation[1].msi
SOURCEMGMT: Processing media source list.
Note: 1: 2203 2: 3: -2147287037
SOURCEMGMT: Source is invalid due to missing/inaccessible package.
Note: 1: 1706 2: -2147483647 3: myInstallation[1].msi
SOURCEMGMT: Processing URL source list.
Note: 1: 1402 2: UNKNOWN\URL 3: 2
Note: 1: 1706 2: -2147483647 3: myInstallation[1].msi
Note: 1: 1706 2: 3: myInstallation[1].msi
User policy value 'SearchOrder' is 'nmu'
SOURCEMGMT: Prompting user for a valid source.
Machine policy value 'DisableBrowse' is 0
Machine policy value 'AllowLockdownBrowse' is 0
SOURCEMGMT: Browsing is enabled.
Font created. Charset: Req=0, Ret=0, Font: Req=, Ret=Arial
SOURCEMGMT: Now checking product {88D5305B-8FC3-4197-8482-5383FC7683ED}
SOURCEMGMT: Attempting to use LastUsedSource from source list.
Note: 1: 1706 2: 3: myInstallation[1].msi
SOURCEMGMT: Processing net source list.
Note: 1: 1706 2: -2147483647 3: myInstallation[1].msi
SOURCEMGMT: Processing media source list.
SOURCEMGMT: Trying media source ;.
Note: 1: 1706 2: 3: myInstallation[1].msi
SOURCEMGMT: Processing URL source list.
Note: 1: 1402 2: UNKNOWN\URL 3: 2
Note: 1: 1706 2: -2147483647 3: myInstallation[1].msi
Note: 1: 1706 2: 3: myInstallation[1].msi
SOURCEMGMT: Failed to resolve source
MainEngineThread is returning 1612
=== Verbose logging stopped: 03.07.2013 23:17:41 ===
But I can't really draw any useful information out of it, different from the first question where it was clear that the drive the installation package was run from is actually a network drive.
In this case though, the installation resides directly under C:\
, but somehow MSI still tries to locate something in Internet Explorers cache files, which I can't wrap my head around.
What's happening here and how can I fix it?
UPDATE
After trying the command
C:\> msiexec /i myInstallation.msi REINSTALL=ALL REINSTALLMODE=vomus /qb
I get an error window telling me
A network error ocurred while attempting to read from the file C:\myInstallation[1].msi
How can this happen when I'm executing (and refreshing) everything from C:
?
回答1:
Someone downloaded an MSI and clicked Open so the MSI was installed from the cache. This was an ephemeral location so now you are where you are.
Can you obtain a copy of this MSI from somewhere? If so, copy it to a location you want it to be cached from and run the command msiexec /i foo.msi REINSTALL=ALL REINSTALLMODE=vomus /qb. It will now be cached there.
There are APIs that do the same thing if you need it to be programatic.
Installer Function Reference
MsiSourceListAddSource
Adds or reorders the sources of a patch or product in a specified context.
MsiSourceListAddSourceEx
Adds or reorders the sources of a patch or product in a specified context. Creates a source list for a patch that does not exist in a specified context. Available in Windows Installer 3.0.
MsiSourceListClearSource
Removes an existing source for a product or patch in a specified context. Available in Windows Installer 3.0.
MsiSourceListClearAll
Removes all the existing sources of a specific source type for a specified product instance.
MsiSourceListClearAllEx
Removes all the existing sources of a specific source type for a specified product instance. Available in Windows Installer 3.0.
MsiSourceListForceResolution
Removes the registration of the current source of the product or patch, which is registered as the property "LastUsedSource". This function does not affect the registered source list.
MsiSourceListForceResolutionEx
Removes the registration of the current source of the product or patch, which is registered as the property "LastUsedSource". This function does not affect the registered source list. Available in Windows Installer 3.0.
MsiSourceListGetInfo
Retrieves information about the source list for a product or patch in a specific context.
MsiSourceListSetInfo
Sets the most recently used source for a product or patch in a specified context. Available in Windows Installer 3.0.
MsiSourceListEnumMediaDisks
Enumerates the list of disks registered for the media source for a patch or product. Available in Windows Installer 3.0.
MsiSourceListAddMediaDisk
Adds or updates a disk of the media source of a registered product or patch. Available in Windows Installer 3.0.
MsiSourceListClearMediaDisk
Removes an existing registered disk under the media source for a product or patch in a specific context. Available in Windows Installer 3.0.
MsiSourceListEnumSources
Enumerates the sources in the source list of a specified patch or product. Available in Windows Installer 3.0.
回答2:
Some Background:
Every MSI "remembers" where it was installed from. This information is stored in the keys below: "HKEY_CLASSES_ROOT\Installer\Products\\SourceList\Net"
Every time a MSI is repaired or modified and files are required (all other information is stored in the "c:\Windows\Installer" folder) the source list is evaluated.
Possible Solution:
In your case some user installed a MSI out of the IE cache. you could download the file again, place it somewhere more persistent and edit the SourceList Key(s).
is the product code of the msi in some kind of compressed way, the quickest way to find the right key is to flip the first 8 letters of the product code. for you that would be "HKEY_CLASSES_ROOT\Installer\Products\B5035D88...\SourceList\Net"
来源:https://stackoverflow.com/questions/17464068/the-feature-you-are-trying-to-access-from-msi-on-local-drive