【问题标题】:“The feature you are trying to access…” from MSI on local drive“您尝试访问的功能......”来自本地驱动器上的 MSI
【发布时间】:2013-07-02 02:12:35
【问题描述】:

这是this question的后续,通过在本地驱动器上定位安装包解决。

不幸的是,似乎在某些机器上,这并不能解决它。

我有以下可用日志

=== 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 ===

但我真的无法从中得出任何有用的信息,这与第一个问题不同的是,很明显运行安装包的驱动器实际上是一个网络驱动器。

虽然在这种情况下,安装直接位于 C:\ 下,但不知何故 MSI 仍然试图在 Internet Explorer 缓存文件中查找某些内容,我无法理解。

这里发生了什么,我该如何解决?

更新

尝试命令后

C:\> msiexec /i myInstallation.msi REINSTALL=ALL REINSTALLMODE=vomus /qb

我收到一个错误窗口告诉我

尝试从文件 C:\myInstallation[1].msi 读取时发生网络错误

当我从C: 执行(并刷新)所有内容时,怎么会发生这种情况?

【问题讨论】:

  • 您开发了这个 MSI 吗?我开始认为这属于 SuperUser。
  • 是的,原来是我自己开发的,所以才发到这里。但我同意这个问题更像是一个用户问题而不是开发问题。

标签: internet-explorer windows-xp windows-installer


【解决方案1】:

有人下载了 MSI 并单击了“打开”,因此从缓存中安装了 MSI。这是一个短暂的位置,所以现在你就在你所在的位置。

您能从某个地方获得此 MSI 的副本吗?如果是这样,请将其复制到您希望从中缓存它的位置并运行命令 msiexec /i foo.msi REINSTALL=ALL REINSTALLMODE=vomus /qb。它现在将被缓存在那里。

如果您需要编程,有些 API 可以做同样的事情。

Installer Function Reference

MsiSourceListAddSource

在指定的地方添加或重新排序补丁或产品的来源 上下文。

MsiSourceListAddSourceEx

在指定的地方添加或重新排序补丁或产品的来源 语境。为不存在于 指定的上下文。在 Windows Installer 3.0 中可用。

MsiSourceListClearSource

删除指定的产品或补丁的现有来源 语境。在 Windows Installer 3.0 中可用。

MsiSourceListClearAll

删除特定源类型的所有现有源 指定的产品实例。

MsiSourceListClearAllEx

删除特定源类型的所有现有源 指定的产品实例。在 Windows Installer 3.0 中可用。

MsiSourceListForceResolution

删除产品当前来源的注册或 补丁,注册为属性“LastUsedSource”。这 函数不影响注册的源列表。

MsiSourceListForceResolutionEx

删除产品当前来源的注册或 补丁,注册为属性“LastUsedSource”。这 函数不影响已注册的源列表。可用于 Windows 安装程序 3.0。

MsiSourceListGetInfo

检索有关产品或补丁源列表的信息 特定的上下文。

MsiSourceListSetInfo

为产品或补丁程序设置最近使用的来源 指定的上下文。在 Windows Installer 3.0 中可用。

MsiSourceListEnumMediaDisks

枚举为媒体源注册的磁盘列表 补丁或产品。在 Windows Installer 3.0 中可用。

MsiSourceListAddMediaDisk

添加或更新已注册产品的媒体源磁盘或 修补。在 Windows Installer 3.0 中可用。

MsiSourceListClearMediaDisk

删除媒体源下的现有注册磁盘 特定上下文中的产品或补丁。在 Windows 安装程序中可用 3.0.

MsiSourceListEnumSources

枚举指定补丁的源列表中的源或 产品。在 Windows Installer 3.0 中可用。

【讨论】:

  • 如果我理解正确的话,您建议用户在Internet Explorer 窗口下载后直接打开一次,对吗?现在当他从驱动器安装它时,Windows 仍然认为该位置在浏览器缓存内?而且您的命令将强制 MSI 安装该软件包而无需在其他任何地方寻找它? (只是为了我,所以我明白你在说什么)
  • 它将“重新缓存”MSI,以便 MSI 现在在当前位置查找它。它不会改变任何已安装或未安装的功能,因为重新安装只是重复所有原始选择。
  • 好的,太好了 - 我会试一试。
  • 我更新了我的问题,不幸的是,似乎仍然存在问题(而且是一个非常令人困惑的问题)
【解决方案2】:

一些背景:

每个 MSI 都会“记住”它的安装位置。此信息存储在以下键中: "HKEY_CLASSES_ROOT\Installer\Products\\SourceList\Net"

每次修复或修改 MSI 并且需要文件(所有其他信息都存储在“c:\Windows\Installer”文件夹中)时,都会评估源列表。


可能的解决方案:

在您的情况下,某些用户从 IE 缓存中安装了 MSI。 您可以再次下载该文件,将其放置在更持久的位置并编辑 SourceList 键。

是 msi 以某种压缩方式的产品代码, 找到正确钥匙的最快方法是翻转产品代码的前 8 个字母。 对你来说,这将是“HKEY_CLASSES_ROOT\Installer\Products\B5035D88...\SourceList\Net”

【讨论】:

  • 您应该永远编辑这些注册表项。它们是 Windows Installer 服务的私有数据,只能使用我上面提到的 API 进行修改。
  • 我一直在编辑它们,从来没有遇到过问题。没有隐藏的逻辑或任何东西。
猜你喜欢
  • 2013-04-20
  • 2014-06-25
  • 1970-01-01
  • 2019-02-15
  • 2021-10-16
  • 1970-01-01
  • 1970-01-01
  • 2015-06-11
  • 1970-01-01
相关资源
最近更新 更多