【问题标题】:uninstall msi package through system service failed: Source is invalid due to client source out of sync (product code is the same)通过系统服务卸载msi包失败:由于客户端源不同步,源无效(产品代码相同)
【发布时间】:2013-04-19 18:03:00
【问题描述】:

我使用 WiX 3.7 编写安装程序,我将安装一个 c# 系统服务将尝试重新安装软件,使用 msiexec -x {product_code} -quiet。我的操作系统是Win8 我先是通过UI安装软件,过一会服务会新建一个进程,开始调用msiexec,但是失败了。 你能帮我解决这个问题吗?我已经挣扎了很久! 非常感谢!

我的日志如下:

MSI (s) (7C:80) [00:22:01:708]: Warning: The package code in the cached package 'C:\windows\Installer\134f7d5.msi' does not match the registered package code.  Cached       
MSI (s) (7C:80) [00:22:01:724]: SOURCEMGMT: Source is invalid due to client source out of sync (product code is the same).

【问题讨论】:

    标签: service installation wix


    【解决方案1】:

    服务和新进程在哪个帐户下运行?默认帐户(例如 LocalSystem)可能无权访问 msi 信息。

    【讨论】:

    • 我使用WiX中的元素来安装一个新系统,从services.msc的结果中,我可以看到该服务是在本地系统帐户下运行的系统帐户应该具有最高权限所以我希望它可以卸载该软件,但它失败了。
    【解决方案2】:

    该消息表示使用相同的ProductCode(通过Product/@Id 属性设置)安装了一个包,但不是同一个包。如果您安装一个包,重新构建它(因此新包获得一个新的“包代码”),然后尝试使用重新构建的包卸载,通常会发生这种情况。如果在卸载期间某些原因导致源解析,并且 Windows Installer 在预期旧包的位置找到新重建的包,也会发生这种情况。

    要摆脱困境,请尝试使用较新的软件包重新缓存/重新安装,然后卸载:

    msiexec /fv path\to\your.msi /l*v install.txt /qb
    msiexec /x path\to\your.msi /l*v uninstall.txt /qb
    

    之后,再次测试您的场景,不要在两次更新之间更改 MSI。您将慢慢能够追踪到系统中的哪些变化让 Windows Installer 感到困惑和不满。

    祝你好运!

    【讨论】:

    • 感谢您的回复。我明白你的建议,但实际上,我并没有构建更新的包,我的服务只是通过指定产品代码调用 msiexec.exe 来卸载我的软件,从部分日志中,我可以看到系统确实找到了msi 文件,但它认为缓存的 msi 是较新的,阻止卸载
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-14
    • 2014-05-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多