代码之家  ›  专栏  ›  技术社区  ›  Justin

Wix/MSI:无法卸载

  •  11
  • Justin  · 技术社区  · 14 年前

    您尝试使用的功能位于不可用的网络资源上

    一个对话框指向我从功能安装的.msi的路径(.msi在那里,但是它已经被重建了,因此在我安装它之后发生了变化)

    我很担心这个对话框,因为我相信Windows Installer会跟踪已安装的.MSI文件,但是这个对话框似乎暗示我可以通过删除、移动或更改安装程序来破坏我的卸载程序。

    是这样吗?

    我需要做什么来确保我不会以这种方式破坏我的卸载程序(我们是否需要保留机器上安装过的所有安装程序版本的副本?)

    4 回复  |  直到 14 年前
        1
  •  10
  •   wilx    10 年前

    也就是说,通常MSI卸载不需要MSI,但在某些情况下可能需要它。例如,如果在卸载过程中调用ResolveSource操作,MSI将查找.MSI。

    现在有几种方法可以解决这个问题:

    1. %WINDIR%\Installer . CD到该目录并执行 findstr -i -m SOMESTRING *.msi 其中SOMESTRING是一些独特的东西,如您的ProductName属性。一旦知道了缓存的MSI的名称,就可以在Orca中打开它以获得所需的属性。然后将这些属性放在您可用的MSI副本中,并尝试执行卸载。不,它不是你安装的确切的MSI,但通常它已经足够接近了。

    1. MSIZAP 从MSI和Add/RemovePrograms中删除应用程序的所有知识的实用程序。注意,这实际上并没有卸载程序,因此您还必须编写一个脚本或手动卸载程序的所有跟踪。

    1. 重新设置工作站的图像
        2
  •  11
  •   Mridang Agarwalla    11 年前

    msiexec /fv path\to\your.msi /l*v i.txt
    

    那会复制的your.msi 在缓存的MSI上执行修复。那你会在一个更好的地方。

        3
  •  1
  •   Maate    12 年前

    如果您确切地知道什么是错误的(在开发过程中经常出现这种情况),我更喜欢打开Windows将用于卸载的MSI文件,并使用Orca之类的工具直接对其进行编辑,以修复或删除导致失败的部分。

    例如:

    • 在%WINDIR%\Installer中找到MSI文件。MSI应该是在卸载失败之后该文件夹中最后一个编辑的MSI文件。
    • 用Orca打开msi文件。
    • 删除失败的部分-例如,InstallExecuteSequence操作失败,这是一个非典型的场景。
    • 保存msi并关闭Orca以释放msi文件上的锁。
        4
  •  0
  •   Stein Åsmul    11 年前

    -你有没有尝试过“ 从源运行

    这是功能树中的一个选项,允许您从安装源运行某些文件。这通常与 管理员映像 在网络上。见下图。我没试过,但我想这可能会导致:

    enter image description here

    2 - 编写自定义操作脚本 ? 如果是这样,您是提取到tmp文件夹还是从已安装的文件或二进制表中运行?如果是这样,自定义操作是否只在安装时运行?

    你是不是在经营一家 指向已安装文件的?如果是这样,则此文件可能无法在网络上访问。

    4 - 到网络共享?

    你是不是直接在电脑上安装了什么东西 ?

    还有很多其他的可能性。

    推荐文章