0

在添加/删除程序中尝试删除我们的应用程序时,弹出以下错误,应用程序卸载失败:

错误

“mFileBagIDE.dll”不是有效的短文件名。

奇怪的是,如果原始安装 DVD 不在驱动器中,您只会收到此错误。如果 DVD 在驱动器中,则卸载工作完美。

这是真正的问题:直到我们的应用程序已经被广泛部署之后,我们才发现这个错误,而且我们客户的情况是,他们中的许多人可能不再拥有他们的原始 DVD。这意味着下一个版本的安装程序(进行 Windows 安装程序主要升级)将失败,因为它无法首先删除以前的版本。

所以,我的问题是双重的:

  • 我们做了什么来制造这个问题,以便我们可以在未来的版本中避免它?
  • 有没有办法告诉我们的下一个 Windows 安装程序忽略此错误并继续删除以前的版本?

我们当前的安装程序(导致问题的安装程序)是使用 InstallAware 生成的。我们很可能会转向 WiX。但是任何平台(InstallAware、WiX、原始 MSI 表)的解决方案都值得赞赏!

更新:InstallExecuteSequence我的 MSI和表中都有以下行InstallUISequence,这可能非常相关,但我不知道 SRCDIREX 属性是什么,或者它的设置位置。

| Action        | Condition    |
|---------------|--------------|
| ResolveSource | NOT SRCDIREX |
4

3 回答 3

2

可能引用原始 MSI 的操作之一(标准或自定义)不以仅在安装时运行为条件(例如,ResolveSource 应以“未安装”为条件)。您可能可以使用更改相关操作条件的补丁(MSP 文件)来解决此问题。

于 2010-01-28T15:55:21.200 回答
0

我将首先确定导致错误的操作。我会这样做:

  • 从 DVD 安装您的应用程序
  • 将 msi 文件复制到某个本地文件夹,比如说“c:\temp”
  • 取出 DVD
  • 像这样开始卸载:“ msiexec /x yourapp.msi /L*v c:\temp\uninst.log

出现错误时,卸载实际上会暂停。然后,您可以检查日志的末尾以确切了解您在序列中的位置。那应该可以帮助您进行调试。

如果答案确实是 ResolveSource,那么定期修补可能不是一种选择。Heath Stewart 在他的博客中提到了这一点 - http://blogs.msdn.com/heaths/archive/2007/10/25/resolvesource-requires-source.aspx

“一般来说,不要安排 ResolveSource。例如,如果在安装补丁时运行它,用户将不得不插入原始媒体,无论他们是否需要。”

如果这是您发现自己所处的位置,您可以创建一个转换来更新您的 ResolveSource 操作的条件,并将其手动应用于 msi 文件的缓存副本。这有点痛苦,但我很确定这会奏效。

于 2010-01-29T14:57:49.873 回答
-1

您是否尝试将这些文件复制到 %WinDir%/system32 文件夹?

编辑:进行设置以将所有设置 MSI 包复制到磁盘,然后从磁盘驱动器安装它。删除卸载程序不需要的所有文件。Adobe、HP 和许多其他公司都在这样做。

于 2010-01-28T15:21:53.863 回答