尝试在“添加/删除程序”中删除我们的应用程序时,会弹出以下错误,并且应用程序无法卸载:
错误
'mFileBagIDE.dll'不是有效的短文件名。
奇怪的是,如果原始安装DVD不在驱动器中,则只会出现此错误。如果DVD在驱动器中,则卸载工作正常。
这是真正的踢球者:在我们的应用程序已经广泛部署之前,我们没有发现这个bug,而且我们客户的情况很可能很多人不再拥有原始DVD。这意味着下一版本的安装程序(执行Windows安装程序主要升级)将失败,因为它无法先删除以前的版本。
所以,我的问题有两个:
我们当前的安装程序(导致问题的安装程序)是使用InstallAware生成的。我们可能会转向WiX。但是,任何平台(InstallAware,WiX,原始MSI表)中的解决方案都受到赞赏!
更新:我的MSI中的InstallExecuteSequence
和InstallUISequence
表中都有以下行,这可能非常相关,但我不知道是什么SRCDIREX属性是或正在设置它。
| Action | Condition |
|---------------|--------------|
| ResolveSource | NOT SRCDIREX |
答案 0 :(得分:2)
引用原始MSI的其中一个操作(标准或自定义)可能不仅仅在安装时运行(例如,ResolveSource应该被视为“未安装”)。您可以使用修补程序(MSP文件)来解决此问题,该修补程序会更改相关操作的条件。
答案 1 :(得分:0)
我首先要确定导致错误的操作。我就是这样做的:
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和许多其他公司正在这样做。