在没有源mst的情况下卸载



我正在使用Transform创建一个windows安装包,使其成为多实例。我的mst文件更新了一些注册表项组件的ProductCode和GUID。这是每台机器安装的。现在我无法卸载我的产品,如果:

  1. 我的mst文件已从其原始位置删除
  2. TransformsSecure策略设置为1

安装程序尝试在原始位置查找mst文件,但无法执行此操作,卸载失败。在这两种情况下,我该怎么做才能让我的产品卸载?

一些额外信息。我看到我的msi和mst文件缓存在"c:\Windows\Installer"文件夹中。但不知何故,安装程序并没有试图从缓存中获取mst。此外,如果未设置TransformsSecure策略,则一切都运行良好。在这种情况下,我的mst文件会自动缓存在"c:\Windows\Installer{358e77a7-464b-4588-b538-a79fceb0ffa8}"文件夹中。

您可能需要在某个地方发布一个完整的详细卸载日志,我不清楚(对不起(您是否因为1 and 2或1 or 2而无法卸载。因此,对你的确切情况有一定的猜测。

但是,如果mst已从安装程序缓存中删除,则Windows将尝试在原始安装源中查找它,就像缓存的MSI文件丢失一样。但是,安全转换不允许转到原始安装源(例如,因为它们只能从安全缓存位置检索,而不能从DVD检索(,因此如果缺少缓存位置,卸载将失败。所以这是正常的-安全转换需要访问安全位置的mst,而不需要访问其他位置。是的,如果转换不安全,它可以使用安装源。

有时,系统帐户会失去对安装程序缓存位置的访问权限,这将产生相同的结果。它在安全位置找不到mst,但转换是安全的,所以它不能使用原始安装源,所以操作失败。

因此,日志中的详细信息可能会有所帮助。它是否在尝试获取mst时出现(比如(系统错误5?或者它是否说明了它为什么不能使用它?是否有一种尝试来解析源,但由于转换是安全的,所以它没有这样做?

这么多年过去了,Windows安装程序似乎仍然存在同样的问题。感谢微软一直以来的忽视。优点是您不必一次又一次地调整修复;(

为了解决这个问题,应该嵌入转换文件。可以使用以下方法之一:

嵌入式定制转换为子存储

管理子存储

Msidb.exe

属性TRANSFORMS如下所示:TRANSFORMS=":MyProduct.mst";(请参见TRANSFORMS属性(。

最新更新