VS 2017 安装失败

VS 2017 Installation failed

我在 Windows 7 上安装了 VS2017。一段时间后我收到错误:

MSI: C:\ProgramData\Microsoft\VisualStudio\Packages\Microsoft.VisualStudio.MinShell.Msi,version=15.6.27421.1\Microsoft.VisualStudio.MinShell.Msi.msi, Properties:  REBOOT=ReallySuppress ARPSYSTEMCOMPONENT=1  MSIFASTINSTALL="7"  VSEXTUI="1"  VS7.3643236F_FC70_11D3_A536_0090278A1BB8="G:\Program Files (x86)\Microsoft Visual Studio17\Community" 
        Return code: 1632
        Return code details: The Temp folder is on a drive that is full or is inaccessible. Free up space on the drive or verify that you have write permission on the Temp folder.
    Log
        G:\TEMP\dd_setup_20180318121545_006_Microsoft.VisualStudio.MinShell.Msi.log

我查看了TEMP所在的G:。它有 200 GB 的免费空间。 但有一件奇怪的事情:这个文件夹和所有其他文件夹都是只读的。我在属性中取消选中它,然后关闭属性对话框,再次打开它:它是只读的。 我可以修改它,甚至 MSI 安装程序也可以:它在那里创建了日志文件。但是在安装过程中出现错误。 这是什么问题,我该如何解决?

我 运行 与日志:

Machine policy value 'DisableUserInstalls' is 0
SRSetRestorePoint skipped for this transaction.
Note: 1: 1336 2: 3 3: C:\Windows\Installer\ 
MainEngineThread is returning 1632
No System Restore sequence number for this installation.
User policy value 'DisableRollback' is 0
Machine policy value 'DisableRollback' is 0
Incrementing counter to disable shutdown. Counter after increment: 0
Note: 1: 1402 2: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Installer\Rollback\Scripts 3: 2 
Note: 1: 1402 2: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Installer\InProgress 3: 2 
Decrementing counter to disable shutdown. If counter >= 0, shutdown will be denied.  Counter after decrement: -1
Restoring environment variables
Decrementing counter to disable shutdown. If counter >= 0, shutdown will be denied.  Counter after decrement: -1
MainEngineThread is returning 1632

Disc Space Reclaiming - Quick Wins?: Too much to read? The essential options (arguably).


最终总结

这个问题原来是重定向的 TEMPC:\Windows\Installer 缓存文件夹 - 后者位于不可用的驱动器上。

请小心重定向系统文件夹,尤其是C:\Windows\Installer。这是一个 super-hidden 系统文件夹,side-effects 很常见。

您必须确保重新定位的文件夹具有与原始文件夹相同的正确 ACL 权限。 出于安全原因,这非常重要。一方面,整个文件夹可能会被不明白它的用途的人删除 - 使所有包 un-uninstallable 和 un-maintainable。还有其他安全原因。

另外:在我看来,将此文件夹放在网络上 不是 技术上合理的 - 问题 结果。如果驱动器盘符发生变化,本地驱动器也会有问题。这让我想到了下一点:

您的系统 SSD 驱动器缺少 Space?

如果您的真正问题是系统 SSD 驱动器上缺少磁盘 space,请考虑下面列出的一些替代方案。谨慎行事,并自行承担每种选择的风险。大多数应该是无害的。

Disc Space Visualizing:我有一个古老的工具,叫做 SpaceMonger.exe,它向我展示了一个可视化表示占用我的光盘的任何东西 space。很有用。似乎不再支持此工具。也许检查 https://en.wikipedia.org/wiki/WinDirStat for a similar tool (untested by me - run it by virustotal.com).

DriverStore:对所有计算机专家的常驻黑客说一句:不,不 - 不要尝试重定向 %SystemRoot%\System32\DriverStore(!)。 “诱人的阴暗面是”。 “运行阿甘,运行!”。 “小心那把斧头尤金”。等等......你明白了。暂时不考虑 Monty Python 的典故。认真地说:我不知道什么low-level stuff could be involved in the boot process. One would have to ask Raymond Chen, but don't. He has important things to do. However: pnputil.exe, DriverStore Explorer - your own risk。不要这样做 :-).

总体建议

UPDATE: For laptops I like to use a high capacity, low-profile USB flash drive and / or a high capacity SD-card permanently sitting in a port to hold my downloads and installers, VS Help files, maybe even source code (riskier). An obvious, but somewhat "clunky" option.

One can combine this drive with the Library feature in Windows Explorer to show the flash drive under whatever library you want (Downloads, Videos, Pictures, Source, etc...).

我首选的 desktop 磁盘清理选项如下:7, 19, 2, 18, 1, 6, 11, 12(按顺序)。

笔记本电脑的首选选项:7192 18、6、10(减少最大缓存大小)、15、17、3(按此顺序)。

real-world 方法对我来说 顺序略有不同:2(清除过时的 Windows 更新- 这也可能 trim WinSxS - 但我不是肯定的),19(卸载不需要的软件 - 可以相对快速),然后我 运行 SpaceMonger.exe 找到 space 猪并移动它们 - 这通常涉及切换 Downloads folder (7) 和 清除 , movingclouding 媒体文件(图片、视频、音乐),然后 6 用于开发人员 PC(慢跑Visual Studio 并卸载无用的 SDK 和帮助文件),以及 9(消除休眠 - 不适合笔记本电脑),18(启用压缩- 可能需要永远),最后我可能会删除恢复分区(笔记本电脑)并在其位置创建一个新分区以允许将数据文件存储在那里(释放系统分区 space)。此切换是一个 high-risk 操作 - 显然。非常 error-prone(特别是如果没有经验的用户使用 diskpart command-line 工具或 Linux Live Boot 工具 - 如下所述)。并且显然在清除恢复分区之前确认您有 安装媒体 有效的许可证密钥 - 必须提及。我移动的数据文件通常是:源代码存储库、下载文件夹、outlook PST 文件、图像和视频等...这个程序应该回收许多 GB 的磁盘space。不要为了好玩而这样做 - 尽管对于大多数这些选项来说风险应该是可以接受的(除非恢复分区切换 - 它相对简单,但容易出错)。

清理选项

对这些选项持健康的怀疑态度。在许多情况下,它们并不是都非常有用 - 只是试图提及各种调整。 潜在的简单大赢家 没有太多配置和摆弄可以是 2、6、7、9、18。选项 2 和 18 几乎总是耗时,但非常有效。选项 2 可能需要几个小时(尤其是 Windows 7 和 8 - 在 运行ning 时不要中止),选项 18 在大型计算机或慢速磁盘上可能需要更长的时间(但操作可以是已取消)。

选项 0,云存储 是当今时代的隐含的整体选项 . OneDrive FilerGDiskDropbox等...按需下载数据文件

  1. 我的文档: 一般移动用户数据文件夹 到网络位置或另一个本地驱动器(最好)而不是 redirct系统文件夹!很少 system-entanglements.

    • 我不会移动桌面或在此处找到的其他文件夹:HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders,我会移动“我的文档”。只需 right-click 在 Windows 资源管理器中,转到属性,那里有一个选项卡,其中包含可帮助您移动它的功能。 执行此操作时要小心 - 首先要进行备份
    • PicturesVideo 可能 也可以移动,但不能移动桌面或其他特殊文件夹 - 它们可能与引导有关或登录过程(即使是我的文档,错误的包也可能导致这种情况 - 没有什么是没有风险的)。
    • 流媒体和 媒体文件 来自 iTunes 或类似应用程序的流媒体文件显然可以完全占用容量有限的光盘。我使用 SpaceMonger.exe 获取概览,然后将文件移至其他位置。
    • 对于有多个用户的计算机,显然会有多个“我的文档”文件夹要重定向。
  2. Microsoft 的磁盘清理工具: 运行 cleanmgr.exe, select Clean up system files 如此处所述:https://serverfault.com/q/573208/20599(顶部)。

    • 2018 年 10 月更新:“下载”文件夹现在是清理选项! 请勿启用! 它会毫无疑问地删除整个下载文件夹。 此问题似乎已在 2021 年 10 月之前得到纠正

    • 您现在可以快速卸载已应用的 Windows 更新 - 这可以使您的系统驱动器 恢复几千兆字节。在下图中,我可以压缩 5.36 GB。对于 Windows 7,我看到有数十 GB 的数据可清除。

    • 此工具还可以缩小 WinSxS directory(Win32 side-by-side 程序集文件夹)。我不是 100% 肯定。

    • 显然您可以在“添加/删除程序”中删除不需要的包并删除系统还原点(使用下图中的第二个选项卡访问这些功能):

  3. 第三方清理应用程序:第三方工具,例如CCleaner 可以通过清除各种应用程序和工具的缓存文件和临时文件来清除更多 space。这个特殊的工具 suffered a malware attack recently。使用风险自负。

    • 个人意见/建议:仅用于测试盒或non-critical机器。清理非常棒,但它也涉及一些风险(丢失登录密码、丢失系统日志等)。 Self-evident,但应该提一下。
    • 我的 2 美分:不是企业解决方案,但对于喜欢试验和保持机器调试的高级家庭用户来说可能没问题。
  4. 管理安装:对于大型 MSI 文件,执行管理安装将阻止整个 MSI 的缓存C:\Windows\Installer 中的文件。您必须从适当的网络共享安装,以便文件可用于修复操作。

    • 管理安装实质上是从 MSI 中提取嵌入式 CAB 文件,并允许创建一个网络安装点,所有计算机都可以从中提取文件,而不是在本地缓存所有文件。
    • 运行安装和管理安装的通用方法是:msiexec /a File.msi。更多详细信息,请参见下面的 links。
      • Extract MSI from EXE
      • What is the purpose of administrative installation initiated using msiexec /a?
    • How can I eliminate the huge, cached MSI files in C:\Windows\Installer?
    • - 你问我有点失控了。
  5. 已安装的驱动器:一些人涉足将外部驱动器作为文件夹安装在他们的系统上开车。换句话说,另一个驱动器在您的系统驱动器上显示为常规文件夹并按此运行 (sample)。

    • 我没有这方面的经验,随着时间的推移我怀疑它的可靠性。据我所知,如果操作正确(并且永远不要取出物理驱动器),它实际上可能比其他几个选项更好。
    • 我只会数据文件夹(不是设置文件夹,或核心OS文件夹,例如桌面)。可能用于 源代码控制文件夹 。如果 link 中断,数据应该仍然是安全的,系统仍然可以启动(和 link re-established)。
    • 更新Windows Explorer's "Include in library" is an alternative?看一眼)我喜欢创建一个“源代码库”,其中包含来自各处的文件夹。
  6. Visual Studio:以及 Visual Studio 的明显清理选项(为了完整性):

    • 如果您已在本地下载 MSDN 帮助Help => Add and Remove Help Content,请删除适当的项目并改用在线帮助或将 Local store path 更改为底部为内容使用另一个驱动器)。
    • 或者你有几个版本的您不需要的 SDK 或者您有 Visual Studio 不需要的功能,删除它们(在 Visual Studio 中:Tools => Get Tools and Features... - 去掉不必要的功能 - 我经常使用 Individual Components 视图)。
  7. 下载文件夹:我确定我忘记了很多可行的选择来获得更多工作space 不破坏你的盒子。一种方法是清理您的 Downloads folder 并将所有安装程序移动到网络位置 - 对于某些人来说,这可能是最大的节省。

    • 这也适用于笔记本电脑 - 这几乎是我为带有小光盘的笔记本电脑做的第一件事 space。如果您无法访问安装程序的网络共享 - 例如在旅行时 - 那么只需使用拇指驱动器或外部硬盘驱动器来保存您的安装程序和 ISO 文件。
    • 对于有多个用户的计算机,显然会有多个下载文件夹可能装满了东西。使用磁盘 space 可视化工具查看(参见列表顶部的 link)。
  8. Page File:有些人从系统中移动系统页面文件(pagefile.sys)驱动器到另一个驱动器。 以前这导致我 无法启动系统 ,但也许现在情况好些了 。这不是我要做的第一件事 - 这是非常核心的 OS-stuff.

    • 对于只有一个驱动器的笔记本电脑来说显然是不可能的(除非您擦除恢复分区并在其位置创建一个真实的、可见的分区)。
    • 我觉得这个选项有风险,也许我应该把它放在下面的“dis-honerable 提及”部分。
    • 小心。如果您遇到问题,也许“last-known 好”功能或系统还原可以帮助您?
  9. 休眠文件:Windows系统上的休眠文件将存在于系统驱动器上,和 I am not aware of any way to move it anywhere else for very fundamental technical reasons. However, you can disable hibernation to get rid of the whole file。这将在现代计算机上释放几 GB 的空间。

    • 你显然失去了让你的机器进入休眠状态的能力(内存转储到磁盘),但睡眠模式(low-power使用模式/待机)应该仍然可用。
    • 休眠模式可能更适合笔记本电脑(如果电池 运行 在旅行时笔记本电脑无法 auto-hibernate 并且您可能会丢失数据)。
  10. Application Temp & Cache Folders:上面提到的CCleaner可以消灭很多用于各种应用程序的临时文件(虽然我真的不推荐使用这个 - 我使用 cleanmgr.exe 代替 - 和 CCleaner 用于测试盒)。

    • Web 浏览器(Firefox、Opera、Vivaldi、Chrome、IE、Edge、Safari 等...)也可以向磁盘发送大量垃圾邮件缓存文件和下载的垃圾。可以重定向所有这些文件夹,但我更愿意将它们缩小到某个可接受的最大大小。
    • 随着时间的推移,许多其他各种应用程序都会在系统上留下垃圾。其中一些可以使用上面提到的 CCleaner(或其他此类工具)进行清洁。同样不是工具推荐。如果可用,请使用应用程序本身内部的清理功能。
    • 对于有多个用户的计算机,显然会有多个缓存文件夹需要限制和清理。
  11. 特殊 Data-Heavy 应用程序的存储文件夹:某些应用程序可能会存储大量数据文件可以移动到其他驱动器的系统驱动器(以及“我的文档”之外的驱动器)。

    • 最大的嫌疑人可能是 Outlook(至少在旧版本中)- 或 其他电子邮件软件(Thunderbird、Lotus Notes 等) ...)。对于 Outlook,只有一个 *.PST 文件存储所有电子邮件和附件,或者如果连接到 Exchange,则有一个类似的同步文件。该文件可以相对容易地移动到不同的驱动器。有些人甚至只为他们的电子邮件使用 Web-interface 并删除本地 PST 文件(适用于笔记本电脑)。
    • 不过分,MS-SQL 数据库 可能是另一种类型的海量数据文件,可以相对轻松地移动到不同的驱动器。
    • 这个列表可以做得很大,但要减少 returns 添加更多(网络服务器文件夹虚拟机映像、媒体/视频文件(上面提到)、虚拟化应用程序等...)。
    • 对于有多个用户的计算机,显然会有多个存储位置要重定向。
  12. 源代码管理工作文件夹和存储库:对于开发人员来说,这是 100% self-evident -列出来几乎令人尴尬,但我只想提及它。它也与前一点有关,但我将其添加为自己的要点。您同时移动工作文件夹和源ode 存储库(如果不同,如果是本地的)到与系统驱动器不同的驱动器。例如 GIT、Mercurial、Perforce、StarTeam 等...

  13. Build Process Junk:除了将源代码管理文件夹移动到其他驱动器之外,某些进程也可能生成巨大的日志文件,有时会在意想不到的位置向系统发送垃圾邮件。我听说 MSBuild 倾向于 enthusiastically create log files 散布在整个系统中,我不确定正常的 Microsoft 清理工具是否检测到它们(例如上面提到的 cleanmgr.exe)。你的源代码可能有很多你可以处理的目标文件。

  14. Visual Studio 代码: 愚蠢的选择,但是 ad-hoc 开发人员笔记本电脑 旅行 tech-workers,可能会依赖较小的 multi-platform Visual Studio Code 而不是 Visual Studio 来做小的开发测试/工作。安装明显更小。个人注意事项:整个工具有点奇怪 :-)。现在还有浏览器版本吗?

  15. Windows Store Apps & Per User Installations:如果盒子上有多个用户, 几个商店应用程序可以安装多次,每个用户一次。如果需要,可以在这里进行一些清理工作。我想有些游戏可能会很大。在 side-by-side 安装功能的时代,我们现在要部署所有东西 per-user?奇数

  16. 调整每个包安装:几乎每个你安装的包都可以在安装过程中稍微修改以添加更少的文件到系统分区。

    • Redirect Application Installation Folder:这个选项我个人比较不喜欢,但是用的很多。对于每次安装,您将安装文件夹重定向到与常规 ProgramFilesFolder 不同的驱动器和文件夹层次结构。这是在 per-package 的基础上完成的,并不是所有的包都支持它。通常,您会转到“自定义”安装对话框,在其中执行“功能 selection”(要安装的设置功能)。
    • 省略可选功能:您安装的大多数软件包都将包含您可以省略的可选组件,甚至 run-from-source 对于某些 MSI 软件包。某些开发人员工具通常可以在没有太多 side-effects 的情况下进行相当多的调整。 大型游戏通常安装到常规non-SSD硬盘驱动器,而不是系统驱动器。
  17. 卸载Windows组件:可以从[=858中添加/删除一些组件=].单击 old-style Add / Remove Control Panel Applet 中的 Turn Windows Features On or Off。您可以关闭/删除某些 .NET 版本、IE、IIS、Windows 媒体播放器、消息队列服务器、打印为 PDF、PowerShell 和各种其他组件。可能不会从中获得太多好处(一些安全优势可能通过删除一些组件 - 例如支持 SMB 1.0 / CIFS 文件共享或 IIS)。

  18. 为系统驱动器启用压缩:您可以在整个系统驱动器上启用压缩 - 有一些性能损失- 前提是文件系统是 NTFS。简直Right-click the system drive => Properties => Compress drive to save disc space。这可能需要相当长的时间(旧的 HD、SSD 更快)。您还可以压缩单个文件夹。我喜欢在 Windows 资源管理器中启用“以彩色显示压缩或加密的 NTFS 文件”选项。 File Menu => Options => Show => Show compressed or encrypted NTFS files in color.

  19. Uninstall Unnecessary Software:上面第2项中提到的被遗忘的明显选项,你显然应该卸载任何软件不再需要了。 普通磁盘猪:安装了gamesweird SDKsdevelopment tools用于测试,expired trial versions用于各种软件等...卸载: Windows key + R,键入 appwiz.cpl 并按 Enter

  20. 用户数据清理:对于某些已卸载的应用程序,可能会在 %UserProfile%%AllUsersProfile%清理和往常一样有风险,请谨慎,但这里可能有很多垃圾 - 有时是千兆字节。

    • 在进行此类清理时必须格外小心。先压缩文件夹。 “只有大赢家”——为什么要对小文本文件吹毛求疵?如果您陷入这些文件夹中,请真正减少 returns。使用 disc-space 可视化工具查看猪。
      • %AllUsersProfile% - 共享数据
      • %UserProfile%%UserProfile%\AppData - 用户特定数据,记得为所有用户(如果有多个)清理。
  21. 杂散包缓存:如上所述,MSI 包(和其他安装程序)进行了大量缓存包)。很可能会留下很多这样的包裹卸载后(至少在当天使用 Installshield 缓存设置时就是这种情况)。

    • 此处描述了最常见的缓存位置:清洁风险自负,显然 - 我再说一遍,我是认真的。一些千兆字节通常存储在这里。
    • 内联路径(只是一个 selection,可以有很多其他的):
      • WiX: %ProgramData%\Package Cache
      • Installshield%SystemRoot%\Downloaded Installations(较旧的 IS 设置)和 %LocalAppData%\Downloaded Installations(较新的 IS 设置)
      • 高级安装程序[AppDataFolder][|Manufacturer]\[|ProductName] [|ProductVersion]\install
      • Visual Studio: %AllUsersProfile%\Microsoft\VisualStudio\Packages请参阅下面评论中的重要提示(禁用缓存)。
  22. 包分发缓存文件夹:SCCM 和其他包分发系统的缓存文件夹非常大。例如ccmcache. These folders can usually be cleaned or re-configured取少space.

毫无疑问还有许多其他小技巧,但是请不要重定向系统文件夹!

替代方法

(Dis)-Honorable Mentions:以下是不是推荐,但是一些替代方法。它们比上面的选项风险更高(应该足够好),最好是你正在设置新的笔记本电脑或重新安装它,并且想摆脱讨厌的 供应商 recovery-partitions 你可以没有。

让我们坚定地陈述显而易见的事实:每年使用这些工具都会丢失大量数据。所以先喝咖啡或咖啡因。戴上眼镜。看看周围。调整马尾辫和胡须(女士也一样)。用第三人称对自己说话。摆出明显疯狂的姿势,大声喊出“我愿意!”,真正投入到即将到来的灾难中!祝你好运!洞里开火! “为了效果而开火”。 SNAFU。 FUBAR。好的,已经够多了......我有过糟糕的经历 - 但没有大灾难(敲木头) - 使用所有这些工具。说够了 - 小心,您的数据很重要。老婆的宝贝照片,你未提交的代码等等...

  1. diskmgmt.mscdiskpart.exe (Windows): 打开分区管理器 (diskmgmt.msc) 并清除任何你可以不用的恢复分区或隐藏分区,然后扩展你的系统磁盘以填满整个物理磁盘或创建一个新的可见分区。
    • 不再可能恢复出厂设置(无论如何都可能过时)。您需要安装媒体才能重新安装(可下载?)。
    • 小心你擦掉的东西! 无法恢复。分区通常受到保护且不可触摸。在许多情况下,它们也是不可移动的 un-expandable。
    • 也许创建一个新的可见分区来替换恢复分区并将数据文件和您的下载文件夹移动到那里以在您的系统分区上腾出更多空间?
    • 如果分区受到保护,您可以使用 diskpart 删除它们,或者查看 gparted 的下一个要点。尽管使用 diskpart 很容易搞砸(命令行)。
  2. gparted (Linux): 您可能无法从 diskmgmt.msc 中删除恢复分区 (保护分区)。如果您坚持不懈,您可以启动到 Linux Live Disc / System(从可移动媒体启动)并使用 gparted 删除。
    • 我这样做是为了摆脱过时和无用的恢复分区和/或恶意软件,它工作得很好。但坦率地说,我尽可能相信这个 gparted 应用程序。无意冒犯 gparted,但与 Windows 打好比赛很有挑战性。对于这种冒险的尝试,备份是至关重要的和强制性的 - 显然。
    • 虽然有风险(Linux 工具正在更新声明 Windows 分区的分区表)这可能适用于无法重定向数据文件夹的笔记本电脑,因为只有一个物理文件夹磁盘并且您想要系统分区的完整磁盘。
    • 我认为 gparted 甚至允许您此时尝试调整现有分区的大小。我从来没有尝试过。如果你尝试,祝你好运。 “在洞里开火!”。
  3. 克隆:一些使用映像工具磁盘克隆 功能(硬件)将旧磁盘克隆到更大的磁盘上。 显然备份必不可少。远离我的舒适区 - 只是提一下。与此列表无关(这应该是关于获得更多光盘 space 的简单而有效的措施)。
    • 我相信 gparted 中也有这方面的功能。从未测试过。
    • 各种硬件解决方案。我几年前就放弃了。
    • 我为什么怀疑?恶意软件。磁盘错误。加密。 NTFS 复杂性? AD-problems(新旧驱动器正在使用 post-clone)?等等...
    • 几家硬盘供应商似乎熟食店呃专有解决方案 - 这些可能比通用方法更好地测试?
  4. 文件系统分配大小:使用的文件系统及其分配大小影响可用space。从来没有费心去看这个,但是分配大小问题可能会浪费很多 space:Would SSD drives benefit from a non-default allocation unit size?
    • 无法轻松/安全地更改正在使用的磁盘的分配大小。可能有工具可以做到这一点,但好处是 不确定。
    • 现代Windows版本需要NTFS作为系统分区文件系统。 FAT32exFAT 等其他文件系统的开销较低(特别是对于较小的分区 - 会有更多 space 可用),并且它们可能更快,但有更多限制。对于 FAT32,最大的限制可能是 4GB 最大文件大小 - 今天不可行。

这个答案的其余部分(下面)是在调试期间写的 - 我会保留它。它包含通用和 general-purpose 调试选项。


VC+ 运行次

正如在底部的 link 中看到的那样,其他人也看到了相同的部署错误。在进行过多调试之前,让我们尝试最简单的方法。请尝试安装VC++ 运行次 2017 年(或许还有 2015 年)来自这里:

潜在的常规修复

This seems to be the better discussion online for this problem. I would first try the suggestion to run this tool: Microsoft Install and Uninstall Troubleshooter.

你也可以试试this list of fixes。至关重要的是,在再次尝试 释放任何可能锁定的文件 之前,我还会 尝试重新启动 。只是为了把石板擦干净。系统的事件日志可能包含有关所见错误的更多信息(有时甚至超出 msiexec.exe 日志中的内容)。

ACL

G: 驱动器上的 TEMP 文件夹的 ACL(访问控制列表)是什么?

更新:还要确保隐藏文件夹C:\Windows\Installer存在并且具有正确的权限设置。您需要在 Windows 资源管理器中 show protected operating system files 才能看到此文件夹。

详细日志记录

尝试为有问题的 MSI 安装创建一个适当的、详细的日志(比您引用的日志信息更丰富)。这为您提供了一些东西来弄清楚正在发生的事情。 .

出于调试目的,我会为所有 MSI 安装启用日志记录。请参阅 installsite.org on logging(“ 机器上所有设置的全局 ”部分)了解如何执行此操作。

我更喜欢为 dev 和 test boxes 打开此默认日志记录。通常你会突然看到一个 MSI 错误并且你希望你有一个日志 - 现在你可以,随时准备好 %tmp%.

快速测试

对于你的情况,我会去 C:\ProgramData\Microsoft\VisualStudio\Packages\Microsoft.VisualStudio.MinShell.Msi,version=15.6.27421.1\ 查看磁盘上是否存在 MSI 包,然后我会在启用日志记录的情况下启动它:

msiexec.exe /I "Microsoft.VisualStudio.MinShell.Msi.msi" /QN /L*V "C:\msilog.log"

或者,我只需双击 MSI 文件,看看是否会收到更好的交互式错误消息。您很可能需要详细日志来获取任何信息。

见下方评论link(具体错误)。

只需检查 c:\windows\tempc:\windows\installer 它们存在并且可写吗?

就我而言,我之前删除了 c:\windows\installer 但忘记了,所以我必须重新创建它。

如果禁用 UAC,也会出现同样的错误。 Visual Studio 如果用户帐户控制关闭,安装程序将无法向 TEMP 写入任何内容。解决方案 - 启用 UAC。

在我的例子中是 VS 2019 和 Windows Server 2012 R2。