如果原始安装DVD不在驱动器中,则卸载错误

时间:2010-01-28 15:11:16

标签: installer wix windows-installer uninstall installaware

尝试在“添加/删除程序”中删除我们的应用程序时,会弹出以下错误,并且应用程序无法卸载:

  

错误

     

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

奇怪的是,如果原始安装DVD不在驱动器中,则只会出现此错误。如果DVD在驱动器中,则卸载工作正常。

这是真正的踢球者:在我们的应用程序已经广泛部署之前,我们没有发现这个bug,而且我们客户的情况很可能很多人不再拥有原始DVD。这意味着下一版本的安装程序(执行Windows安装程序主要升级)将失败,因为它无法先删除以前的版本。

所以,我的问题有两个:

  • 我们如何创建此问题,以便在将来的版本中避免使用它?
  • 有没有办法告诉我们的下一个Windows安装程序忽略此错误并继续删除以前的版本?

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

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

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

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

我首先要确定导致错误的操作。我就是这样做的:

  • 从DVD安装您的应用
  • 将msi文件复制到某个本地文件夹,假设为“c:\ temp”
  • 删除DVD
  • 按照以下方式启动卸载:“msiexec /x yourapp.msi /L*v c:\temp\uninst.log

出现错误时,卸载有效暂停。然后,您可以检查日志的结尾,以确切了解序列中的确切位置。这应该可以帮助您调试。

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

“一般情况下,不要安排ResolveSource。例如,如果在安装补丁时运行,则无论是否需要,用户都必须插入原始媒体。” < / p>

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

答案 2 :(得分:-1)

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

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