【问题标题】:wix: MSI repair from Add/Remove Programs prompts for TEMP directory MSIwix:来自添加/删除程序的 MSI 修复提示 TEMP 目录 MSI
【发布时间】:2014-04-05 06:52:19
【问题描述】:

我正在使用 WiX 为我的应用程序制作一个 MSI,并将其包装在一个带有 Innosetup 的 .exe 中。

当从添加/删除程序列表中选择修复时,我总是会收到一个 Windows Installer 提示,在我的 TEMP 文件夹中寻找 .msi 文件,显然 .msi 文件并没有破坏修复。如果我运行原始安装程序 .exe,我可以很好地修复。运行裸 MSI 也允许我选择修复。

我的 MSI 中是否缺少正确缓存安装程序以便进行修复的内容?

立即更新日志!

我不是 WiX 专家,但我已经弄清楚如何启用详细日志记录,这是我执行修复时的日志。我可以看到它首先在临时目录中查找原始 MSI,但显然这不起作用......我只是不明白我需要更改什么来解决这个问题:

=== Verbose logging started: 3/4/2014  10:01:40  Build type: SHIP UNICODE 5.00.7600.00  Calling process: C:\Windows\Explorer.EXE ===
MSI (c) (F0:10) [10:01:40:810]: Font created.  Charset: Req=0, Ret=0, Font: Req=MS Shell Dlg, Ret=MS Shell Dlg

MSI (c) (F0:10) [10:01:40:810]: Font created.  Charset: Req=0, Ret=0, Font: Req=MS Shell Dlg, Ret=MS Shell Dlg

MSI (c) (F0:D8) [10:01:40:857]: Resetting cached policy values
MSI (c) (F0:D8) [10:01:40:857]: Machine policy value 'Debug' is 0
MSI (c) (F0:D8) [10:01:40:857]: ******* RunEngine:
           ******* Product: {12152253-D5C3-4E75-9100-D53D7ED69262}
           ******* Action: 
           ******* CommandLine: **********
MSI (c) (F0:D8) [10:01:40:857]: Client-side and UI is none or basic: Running entire install on the server.
MSI (c) (F0:D8) [10:01:40:857]: Grabbed execution mutex.
MSI (c) (F0:D8) [10:01:40:935]: Cloaking enabled.
MSI (c) (F0:D8) [10:01:40:935]: Attempting to enable all disabled privileges before calling Install on Server
MSI (c) (F0:D8) [10:01:40:935]: Incrementing counter to disable shutdown. Counter after increment: 0
MSI (s) (BC:54) [10:01:40:935]: Running installation inside multi-package transaction {12152253-D5C3-4E75-9100-D53D7ED69262}
MSI (s) (BC:54) [10:01:40:935]: Grabbed execution mutex.
MSI (s) (BC:28) [10:01:40:935]: Resetting cached policy values
MSI (s) (BC:28) [10:01:40:935]: Machine policy value 'Debug' is 0
MSI (s) (BC:28) [10:01:40:935]: ******* RunEngine:
           ******* Product: {12152253-D5C3-4E75-9100-D53D7ED69262}
           ******* Action: 
           ******* CommandLine: **********
MSI (s) (BC:28) [10:01:40:935]: Machine policy value 'DisableUserInstalls' is 0
MSI (s) (BC:28) [10:01:40:935]: Setting cached product context: machine assigned for product: 352251213C5D57E419005DD3E76D2926
MSI (s) (BC:28) [10:01:40:935]: Using cached product context: machine assigned for product: 352251213C5D57E419005DD3E76D2926
MSI (s) (BC:28) [10:01:40:935]: Using cached product context: machine assigned for product: 352251213C5D57E419005DD3E76D2926
MSI (s) (BC:28) [10:01:40:935]: Using cached product context: machine assigned for product: 352251213C5D57E419005DD3E76D2926
MSI (s) (BC:28) [10:01:40:935]: Using cached product context: machine assigned for product: 352251213C5D57E419005DD3E76D2926
MSI (s) (BC:28) [10:01:40:935]: Using cached product context: machine assigned for product: 352251213C5D57E419005DD3E76D2926
MSI (s) (BC:28) [10:01:40:935]: Attempting to recache package via ProductCode. Beginning source resolution.
MSI (s) (BC:28) [10:01:40:935]: User policy value 'SearchOrder' is 'nmu'
MSI (s) (BC:28) [10:01:40:935]: User policy value 'DisableMedia' is 0
MSI (s) (BC:28) [10:01:40:935]: Machine policy value 'AllowLockdownMedia' is 1
MSI (s) (BC:28) [10:01:40:935]: SOURCEMGMT: Looking for sourcelist for product {12152253-D5C3-4E75-9100-D53D7ED69262}
MSI (s) (BC:28) [10:01:40:935]: Using cached product context: machine assigned for product: 352251213C5D57E419005DD3E76D2926
MSI (s) (BC:28) [10:01:40:935]: SOURCEMGMT: Adding {12152253-D5C3-4E75-9100-D53D7ED69262}; to potential sourcelist list (pcode;disk;relpath).
MSI (s) (BC:28) [10:01:40:935]: SOURCEMGMT: Ignoring last used source.
MSI (s) (BC:28) [10:01:40:935]: Using cached product context: machine assigned for product: 352251213C5D57E419005DD3E76D2926
MSI (s) (BC:28) [10:01:40:935]: SOURCEMGMT: Now checking product {12152253-D5C3-4E75-9100-D53D7ED69262}
MSI (s) (BC:28) [10:01:40:935]: SOURCEMGMT: Processing net source list.
MSI (s) (BC:28) [10:01:40:935]: SOURCEMGMT: Trying source C:\Users\qa\AppData\Local\Temp\is-5O84H.tmp\.
MSI (s) (BC:28) [10:01:40:935]: Note: 1: 1402 2: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer 3: 2 
MSI (s) (BC:28) [10:01:40:935]: Note: 1: 2203 2: C:\Users\qa\AppData\Local\Temp\is-5O84H.tmp\softphone.msi 3: -2147287037 
MSI (s) (BC:28) [10:01:40:935]: SOURCEMGMT: Source is invalid due to missing/inaccessible package.
MSI (s) (BC:28) [10:01:40:935]: Note: 1: 1706 2: -2147483647 3: softphone.msi 
MSI (s) (BC:28) [10:01:40:935]: SOURCEMGMT: Processing media source list.
MSI (s) (BC:28) [10:01:40:935]: Note: 1: 2203 2:  3: -2147287037 
MSI (s) (BC:28) [10:01:40:935]: SOURCEMGMT: Source is invalid due to missing/inaccessible package.
MSI (s) (BC:28) [10:01:40:935]: Note: 1: 1706 2: -2147483647 3: softphone.msi 
MSI (s) (BC:28) [10:01:40:935]: SOURCEMGMT: Processing URL source list.
MSI (s) (BC:28) [10:01:40:935]: Note: 1: 1402 2: UNKNOWN\URL 3: 2 
MSI (s) (BC:28) [10:01:40:935]: Note: 1: 1706 2: -2147483647 3: softphone.msi 
MSI (s) (BC:28) [10:01:40:935]: Note: 1: 1706 2:  3: softphone.msi 
MSI (c) (F0:10) [10:01:40:935]: User policy value 'SearchOrder' is 'nmu'
MSI (c) (F0:10) [10:01:40:935]: User policy value 'DisableMedia' is 0
MSI (c) (F0:10) [10:01:40:935]: Machine policy value 'AllowLockdownMedia' is 1
MSI (c) (F0:10) [10:01:40:935]: SOURCEMGMT: Prompting user for a valid source.
MSI (c) (F0:10) [10:01:40:935]: Machine policy value 'DisableBrowse' is 0
MSI (c) (F0:10) [10:01:40:935]: Machine policy value 'AllowLockdownBrowse' is 0
MSI (c) (F0:10) [10:01:40:935]: Machine policy value 'DisableUserInstalls' is 0
MSI (c) (F0:10) [10:01:40:935]: Machine policy value 'DisableMsi' is 0
MSI (c) (F0:10) [10:01:40:935]: Machine policy value 'AlwaysInstallElevated' is 0
MSI (c) (F0:10) [10:01:40:935]: User policy value 'AlwaysInstallElevated' is 0
MSI (c) (F0:10) [10:01:40:935]: Product {12152253-D5C3-4E75-9100-D53D7ED69262} is admin assigned: LocalSystem owns the publish key.
MSI (c) (F0:10) [10:01:40:935]: Product {12152253-D5C3-4E75-9100-D53D7ED69262} is managed.
MSI (c) (F0:10) [10:01:40:935]: Running product '{12152253-D5C3-4E75-9100-D53D7ED69262}' with elevated privileges: Product is assigned.
MSI (c) (F0:10) [10:01:40:935]: SOURCEMGMT: Browsing is enabled - but requires cred prompt.
MSI (c) (F0:10) [10:01:40:935]: Font created.  Charset: Req=0, Ret=0, Font: Req=MS Shell Dlg, Ret=MS Shell Dlg

MSI (c) (F0:10) [10:01:40:935]: SOURCEMGMT: Now checking product {12152253-D5C3-4E75-9100-D53D7ED69262}
MSI (c) (F0:10) [10:01:40:935]: SOURCEMGMT: Attempting to use LastUsedSource from source list.
MSI (c) (F0:10) [10:01:40:935]: Note: 1: 1706 2:  3: softphone.msi 
MSI (c) (F0:10) [10:01:40:935]: SOURCEMGMT: Processing net source list.
MSI (c) (F0:10) [10:01:40:935]: Note: 1: 1706 2: -2147483647 3: softphone.msi 
MSI (c) (F0:10) [10:01:40:935]: SOURCEMGMT: Processing media source list.
MSI (c) (F0:10) [10:01:40:935]: SOURCEMGMT: Trying media source ;.
MSI (c) (F0:10) [10:01:40:935]: Note: 1: 1706 2:  3: softphone.msi 
MSI (c) (F0:10) [10:01:40:935]: SOURCEMGMT: Processing URL source liMSI (s) (BC:54) [10:01:46:357]: I/O on thread 2564 could not be cancelled. Error: 1168
MSI (s) (BC:54) [10:01:46:357]: I/O on thread 2556 could not be cancelled. Error: 1168
MSI (s) (BC:54) [10:01:46:357]: I/O on thread 500 could not be cancelled. Error: 1168
MSI (s) (BC:54) [10:01:46:357]: I/O on thread 1672 could not be cancelled. Error: 1168
MSI (s) (BC:54) [10:01:46:435]: I/O on thread 580 could not be cancelled. Error: 1168
MSI (s) (BC:54) [10:01:46:435]: I/O on thread 2272 could not be cancelled. Error: 1168
MSI (s) (BC:54) [10:01:46:435]: I/O on thread 1332 could not be cancelled. Error: 1168
MSI (s) (BC:54) [10:01:46:435]: I/O on thread 1756 could not be cancelled. Error: 1168
MSI (s) (BC:54) [10:01:46:435]: I/O on thread 296 could not be cancelled. Error: 1168
MSI (s) (BC:28) [10:01:46:435]: SOURCEMGMT: Failed to resolve source
MSI (s) (BC:28) [10:01:46:435]: MainEngineThread is returning 1612
st.
MSI (c) (F0:10) [10:01:40:935]: Note: 1: 1402 2: UNKNOWN\URL 3: 2 
MSI (c) (F0:10) [10:01:40:935]: Note: 1: 1706 2: -2147483647 3: softphone.msi 
MSI (c) (F0:10) [10:01:40:935]: Note: 1: 1706 2:  3: softphone.msi 
MSI (c) (F0:2C) [10:01:44:372]: SOURCEMGMT: Trying source C:\Users\qa\AppData\Local\Temp\is-5O84H.tmp\.
MSI (c) (F0:2C) [10:01:44:372]: Note: 1: 2203 2: C:\Users\qa\AppData\Local\Temp\is-5O84H.tmp\softphone.msi 3: -2147287037 
MSI (c) (F0:2C) [10:01:44:372]: SOURCEMGMT: Source is invalid due to missing/inaccessible package.
MSI (c) (F0:2C) [10:01:44:372]: Note: 1: 1706 2: -2147483647 3: softphone.msi 
MSI (c) (F0:2C) [10:01:44:372]: Font created.  Charset: Req=0, Ret=0, Font: Req=MS Shell Dlg, Ret=MS Shell Dlg

MSI (s) (BC:54) [10:01:46:435]: User policy value 'DisableRollback' is 0
MSI (s) (BC:54) [10:01:46:435]: Machine policy value 'DisableRollback' is 0
MSI (s) (BC:54) [10:01:46:435]: Incrementing counter to disable shutdown. Counter after increment: 0
MSI (s) (BC:54) [10:01:46:435]: Note: 1: 1402 2: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Installer\Rollback\Scripts 3: 2 
MSI (s) (BC:54) [10:01:46:435]: Note: 1: 1402 2: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Installer\Rollback\Scripts 3: 2 
MSI (s) (BC:54) [10:01:46:435]: Note: 1: 1402 2: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Installer\InProgress 3: 2 
MSI (s) (BC:54) [10:01:46:435]: Note: 1: 1402 2: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Installer\InProgress 3: 2 
MSI (s) (BC:54) [10:01:46:435]: Decrementing counter to disable shutdown. If counter >= 0, shutdown will be denied.  Counter after decrement: -1
MSI (s) (BC:54) [10:01:46:435]: Restoring environment variables
MSI (c) (F0:D8) [10:01:46:482]: Decrementing counter to disable shutdown. If counter >= 0, shutdown will be denied.  Counter after decrement: -1
MSI (c) (F0:D8) [10:01:46:497]: MainEngineThread is returning 1612
=== Verbose logging stopped: 3/4/2014  10:01:46 ===

【问题讨论】:

    标签: wix installation


    【解决方案1】:

    MSI 缓存 .msi 但不将其用作修复源,因此它会提示输入“真实”源来重新安装文件。 (在 Windows 7 之前,MSI 会从 .msi 的缓存副本中删除所有嵌入的文件。从 Windows 7 开始,它会保持它们完整,以免使数字签名无效,但仍然不会将它们用作源。)刻录, WiX 链接器,缓存包并将源注册到 MSI,因此修复工作正常。

    【讨论】:

    • 我不确定我是否理解.. 那么当我在添加/删除程序中点击修复按钮时到底发生了什么?
    • 我编辑了我的回复以澄清:MSI 为内部结构保留 .msi 的缓存副本,但不使用其缓存作为实际文件的来源。这需要不同的缓存。
    • 更详细地说,修复将尝试将已安装的产品恢复到 MSI 文件中定义的初始状态,这可能涉及重新安装丢失或损坏的文件。这需要访问原始安装位置的原始 MSI 文件。您似乎使用了将 MSI 文件放入临时位置并从那里安装的设置,这不是您应该做的事情。
    • @PhilDW 好的,这就是我认为正在发生的事情。那么放置我的 MSI 的更“标准”位置在哪里?或者我应该一起删除修复选项,因为我的产品的安装程序文件始终在线可用?
    猜你喜欢
    • 2016-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    相关资源
    最近更新 更多