我在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 Studio\2017\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
我查了一下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
3条答案
按热度按时间laximzn51#
***磁盘空间回收-快速成功?***:读得太多了?The essential options(可以说)。
最终总结
这个问题原来是重定向的
TEMP
和C:\Windows\Installer
缓存文件夹-后者位于不可用的驱动器上。请小心重定向系统文件夹,特别是
C:\Windows\Installer
。它是一个超级隐藏的系统文件夹,副作用非常普遍。必须确保重新定位的文件夹具有原始文件夹所具有的正确ACL权限。这是出于安全考虑。首先,整个文件夹可能会被不理解它的人删除-使所有软件包不可卸载和不可维护。还有其他安全原因。
另外:在我看来,把这个文件夹放在网络上在技术上是不合理的--会导致问题。如果驱动器号更改,本地驱动器也会出现问题。这就引出了下一点:
系统SSD空间不足?
如果您的真实的问题是系统SSD驱动器上的磁盘空间不足,请考虑下面列出的一些替代方案。谨慎行事,并在您自己的风险与每一个选项。大多数应该是无害的。
磁盘空间可视化:我有一个叫做
SpaceMonger.exe
的古老工具,它可以向我显示占用我磁盘空间的任何东西的视觉表示。非常有用。似乎不再支持此工具。也许检查https://en.wikipedia.org/wiki/WinDirStat的类似工具(未经我测试-运行它的virustotal.com)。DriverStore:还有一句话要对所有电脑人中的常驻黑客说:不,不-不要尝试重定向
%SystemRoot%\System32\DriverStore
(!).“Seductive The Dark Side Is".“* 跑福雷斯特,跑!小心那把斧头尤金等等...你明白了。先不说蒙提·派森的典故。说真的:我不知道low-level stuff在 Boot 过程中会涉及到什么。有人会问Raymond Chen,但不要。他有重要的事情要做。但是:pnputil.exe, DriverStore Explorer - your own risk。不要这样做:-)。总体建议
更新:对于笔记本电脑,我喜欢在端口中永久使用high capacity, low-profile USB flash drive和/或a high capacity SD-card来保存我的下载和安装程序,VS帮助文件,甚至可能是源代码(风险更大)。这是一个明显的,但有点“笨拙”的选择。
人们可以将此驱动器与the Library feature in Windows Explorer相结合,以显示您想要的任何库下的闪存驱动器(下载,视频,图片,源代码等...)。
下面我首选的桌面光盘清理选项是:7、19、2、18、1、6、11、12(按此顺序)。
笔记本电脑的首选选项:7、19、2、18、6、10(减少最大缓存大小)、15、17、3(按此顺序)。
对我来说,现实世界的方法是一个稍微不同的顺序:我的天(清除过时的Windows更新-这也可能会修剪WinSxS -但我不确定),19(卸载不必要的软件-可以相对较快),然后运行
SpaceMonger.exe
来查找占用空间的程序并移动它们-这通常涉及到清除Downloads folder
(7)和 * 清除 、 移动 * 或 * 模糊化 * 媒体文件(图片、视频、音乐),然后6用于开发人员PC(运行Visual Studio并卸载无用的SDK和帮助文件),以及9(消除休眠-不适合笔记本电脑),18(启用压缩-可能永远占用时间),最后我可能会清除恢复分区(笔记本电脑)并在其位置创建一个新分区,以允许数据文件存储在那里(释放系统分区空间)。很明显,这次电击是一次高风险的行动。非常容易出错(特别是当没有经验的用户使用diskpart命令行工具或Linux Live Boot 工具时-如下所述)。显然,在清除恢复分区之前,请确认您有安装介质和有效的许可证密钥-必须提及。我移动的数据文件通常是:源代码存储库,下载文件夹,Outlook PST文件,图像和视频等...此过程应回收数GB的磁盘空间。不要为了好玩而这样做-尽管这些选项中的大多数风险应该是可以接受的(除了恢复分区切换-这相对简单,但容易出错)。清理选项
对这些选择持健康的怀疑态度。它们在许多情况下并不都是非常有用的-只是试图提到各种调整。潜在的容易,大的胜利没有太多的配置和摆弄可能是2,6,7,9,18。选项2和18几乎总是耗时,但非常有效。选项2可能需要几个小时(特别是在Windows 7和8上-运行时不要中止),在大型计算机或慢速磁盘上的选项18甚至更长(但操作可以取消)。
*选项0,云存储*是当今时代隐含的整体选项。OneDrive Filer、GDisk、Dropbox等按需下载数据文件。
*我的文件:通常,将用户数据文件夹**移动到网络位置或其他本地驱动器(最好)比重定向系统文件夹要好得多!很少有系统纠缠。
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders
,我会移动“我的文档”。只需在Windows资源管理器中右键单击它,转到属性,那里有一个带有功能的选项卡可以帮助您移动它。执行此操作时要小心-首先需要备份。Pictures
和Video
可能也可以移动,但不能移动桌面或其他特殊文件夹-它们可能涉及 Boot 或登录过程(错误的软件包可能导致即使是“我的文档”也会发生这种情况-没有什么是没有风险的)。SpaceMonger.exe
来获得概述,然后将文件移动到其他地方。*微软磁盘清理工具:运行
cleanmgr.exe
,选择Clean up system files
,如下所述:https://serverfault.com/q/573208/20599(顶部)。*2018年10月更新:“下载”文件夹现在是一个清理选项!**请勿启用!**它会毫无疑问地删除整个下载文件夹。此问题将于2021年10月纠正。
WinSxS directory
(Win32并行程序集文件夹)。我不是100%肯定。*第三方清理应用:第三方工具(如CCleaner)可以清除各种应用程序和工具的缓存文件和临时文件,从而清理更多空间。这个特殊的工具suffered a malware attack recently。使用风险自担。
个人意见/建议:仅用于测试箱或非关键机器。清理是相当可怕的,但它也涉及一些风险(丢失登录密码,丢失系统日志等...)。这是不言而喻的,但它可能应该被提及。
*我的两分钱:不是一个企业解决方案,但可能是罚款的高级家庭用户谁喜欢实验和保持他们的机器调整。
*管理安装:对于大型MSI文件,执行管理安装将阻止在
C:\Windows\Installer
中缓存整个MSI文件。必须从正确的网络共享安装,以便文件可用于修复操作。管理安装本质上是从MSI中提取嵌入的CAB文件,并允许创建一个网络安装点,所有计算机都可以从中提取文件,而不是在本地缓存所有文件。
运行和管理安装的一般方法是:
msiexec /a File.msi
.更多细节请参见下面的链接。从EXE中提取MSI
使用msiexec /a启动管理安装的目的是什么?
How can I eliminate the huge, cached MSI files in C:\Windows\Installer?
There is a whole lot of installer caching going on-如果你问我,这是一个有点失控。
*挂载驱动器:有些人会尝试将外部驱动器作为文件夹安装到系统驱动器。换句话说,另一个驱动器显示为系统驱动器上的常规文件夹,并具有这样的功能(sample)。
这方面我没有经验,随着时间的推移,我对它的可靠性有怀疑。据我所知,如果你做得对(而且永远不要取出物理驱动器),它实际上可能比其他几个选项更好。
我只会做数据文件夹(而不是设置文件夹,或核心操作系统文件夹,如桌面)。可能用于源代码管理文件夹。如果链接中断,数据应该仍然是安全的,系统仍然可以 Boot (并重新建立链接)。
*UPDATE:Windows Explorer's "Include in library" is an alternative?(确实有偷看)我喜欢创建一个“源代码库”,里面有各种各样的文件夹。
*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
视图)。*下载文件夹:我相信我已经忘记了许多可行的选择,以获得一些更多的工作空间,而不破坏您的盒子。一种是清理你的
Downloads folder
并将所有安装程序移动到网络位置-这可能是对某些人来说最大的保存。这也适用于笔记本电脑-这几乎是我会为磁盘空间很小的笔记本电脑做的第一件事。如果您无法访问您的网络共享安装程序-例如在旅行时-那么只需使用拇指驱动器或外部硬盘驱动器来保存您的安装程序和ISO文件。
对于有多个用户的计算机,显然会有多个下载文件夹,其中可能充满了内容。使用磁盘空间可视化工具查看(请参阅列表顶部的链接)。
页面文件:有些人将系统页面文件(
pagefile.sys
)从系统驱动器移动到另一个驱动器。 回到那天,这导致我的系统无法启动,但现在情况可能更好 *。这不是我会做的第一件事,虽然-这是非常核心的操作系统的东西。对于只有一个驱动器的笔记本电脑来说显然是不可能的(除非您擦除恢复分区并在其位置创建一个真实的可见分区)。
我觉得这个选择有风险,也许我应该把它放在下面的“不光彩的提及”部分。
小心。如果你遇到问题,也许“最后一个已知的好”功能或系统还原可以帮助你?
*休眠文件:Windows系统上的休眠文件将位于系统驱动器上,I am not aware of any way to move it anywhere else用于very fundamental technical reasons。但是,you can disable hibernation to get rid of the whole file。这将在现代计算机上释放几千兆字节。
您显然失去了将计算机置于休眠状态(内存转储到磁盘)的能力,但睡眠模式(低功耗使用模式/待机)应该仍然可用。
休眠模式可能是更可取的保持对笔记本电脑(如果电池耗尽,而旅行的笔记本电脑不能自动休眠,你可能会丢失数据)。
*应用程序临时缓存文件夹:上面提到的
CCleaner
可以清除各种应用程序的大量临时文件(尽管我不推荐使用它-我使用cleanmgr.exe
代替-以及CCleaner用于测试框)。许多其他应用程序,各种各样,随着时间的推移在系统上留下垃圾。其中一些可以使用上面提到的CCleaner(或其他类似工具)进行清理。再次不是工具推荐。如果可用,请使用应用程序本身内部的清理功能。
对于有多个用户的计算机,显然会有多个缓存文件夹文件夹要限制和清理。
*数据量大的特殊应用的存储文件夹:某些应用程序可能会在您的系统驱动器(以及“我的文档”之外)上存储大量数据文件,这些文件可以移动到其他驱动器。
最大的嫌疑人可能是Outlook(至少在旧版本中)-或其他电子邮件软件(Thunderbird,Lotus Notes等...)。对于Outlook,有一个 *. PST文件存储所有电子邮件和附件,或类似的同步文件(如果连接到Exchange)。此文件可以相对容易地移动到不同的驱动器。有些人甚至使用Web界面只为他们的电子邮件和消除本地PST文件(好的笔记本电脑)。
如果不走极端,MS-SQL数据库可能是另一种类型的海量数据文件,可以相对轻松地移动到不同的驱动器。
这个列表可以做得很大,但增加更多的回报会减少(Web服务器文件夹、虚拟机映像、媒体/视频文件(如上所述)、虚拟化应用程序等...)。
对于具有多个用户的计算机,显然会有多个存储位置要重定向。
*源代码管理工作文件夹和存储库:对于一个开发者来说,这是100%不证自明的-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------它也与前一点有关,但我将其作为自己的要点添加。您可以将工作文件夹和源代码存储库(如果不同,并且是本地的)移动到系统驱动器以外的其他驱动器。例如GIT、Mercurial、Perforce、StarTeam等。
*生成进程垃圾:除了将源代码管理文件夹移动到其他驱动器之外,某些进程还可能生成巨大的日志文件,这些日志文件有时会在意想不到的位置向系统发送垃圾邮件。我听说MSBuild倾向于enthusiastically create log files散布在整个系统中,我不确定正常的Microsoft清理工具是否检测到它们(例如上面提到的
cleanmgr.exe
)。你的源代码可能有很多你可以快速转换的目标文件。*Visual Studio代码:这是一个愚蠢的选择,但对于 * 临时开发人员笔记本电脑 * 或 * 旅行技术工作者 *,人们可能会依赖于更小的多平台Visual Studio Code而不是Visual Studio来进行小型开发测试/工作。更小的安装。个人备注:整个工具有点奇怪:-)。浏览器版本现在?
Visual Studio Code(跨平台)。
What are the differences between Visual Studio Code and Visual Studio?
https://code.visualstudio.com/docs/supporting/faq
下载:https://www.visualstudio.com/
*Windows应用商店应用和每用户安装数:如果机器上有多个用户,则可以多次安装多个应用商店应用,每个用户安装一次。如果需要的话,可以在这里进行一些清理。我想有些游戏可能会很大。在并行安装功能的时代,我们现在要为每个用户部署所有东西吗?真奇怪
*重定向应用安装文件夹:这是一个我个人不喜欢的选项,但它被使用了很多。对于每次安装,您都要将安装文件夹重定向到与常规
ProgramFilesFolder
不同的驱动器和文件夹层次结构。这是在每个包的基础上完成的,并不是所有的包都支持这一点。通常你会进入一个“自定义”安装对话框,在那里你可以执行“功能选择”(要安装的安装功能)。*省略可选功能:你安装的大多数软件包都有一些可选的组件,你可以省略这些组件,甚至在某些MSI软件包的情况下可以从源代码运行。某些开发人员工具通常可以进行相当多的调整,而不会产生太多的副作用。大型游戏通常安装在非系统驱动器的常规非SSD硬盘上。
*卸载Windows组件:可以在Windows中添加/删除一些组件。单击旧式
Add / Remove Control Panel Applet
中的Turn Windows Features On or Off
。您可以关闭/删除某些.NET版本,IE,IIS,Windows Media Player,消息队列服务器,打印到PDF,PowerShell和各种其他组件。可能不会从中获得太多好处(可能通过删除某些组件获得一些安全性好处-例如支持SMB 1.0 / CIFS文件共享或IIS)。*启用系统驱动器压缩:如果文件系统是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
.*卸载不需要的软件:上面第2项中提到的被遗忘的明显选项,您显然应该卸载任何不再需要的软件。常用磁盘占用者:
games
、weird SDKs
和development tools
安装用于测试,expired trial versions
用于各种软件等...要卸载,请执行以下操作:Windows键+ R,键入appwiz.cpl
并按Enter。*用户数据清理:对于某些未安装的应用程序,许多垃圾可能会留在
%UserProfile%
和%AllUsersProfile%
中。清理像往常一样有风险,请谨慎使用,但这里可能有很多垃圾-有时是千兆字节。在这种清理过程中必须非常小心。先把文件夹拉上。“只赢大的”-为什么要对小文本文件吹毛求疵?如果你陷入这些文件夹中,回报就会越来越少。使用磁盘空间可视化工具查看Pig。
%AllUsersProfile%
-共享数据%UserProfile%
和%UserProfile%\AppData
-用户特定的数据,请记住为所有用户(如果有多个用户)进行清理。*杂散包缓存:如上所述,大量的缓存继续为MSI包(和其他安装程序包)。很可能在卸载后会留下很多这样的软件包(至少在当天的Installshield缓存设置中是这样的)。
最常见的缓存位置如下所述:Cache locations for (MSI) packages。清洁风险自担,显然-我重复一遍,我是认真的。一些千兆字节通常存储在这里。
内联路径(仅选择,可以有许多其他路径):
*WiX:
%ProgramData%\Package Cache
*Installshield:
%SystemRoot%\Downloaded Installations
(旧IS设置)和%LocalAppData%\Downloaded Installations
(新IS设置)*高级安装程序:
[AppDataFolder][|Manufacturer]\[|ProductName] [|ProductVersion]\install
*Visual Studio:
%AllUsersProfile%\Microsoft\VisualStudio\Packages
.请参阅下面注解中的重要提示(禁用缓存)。*包分发缓存文件夹:SCCM和其他软件包分发系统的缓存文件夹非常大。例如ccmcache。这些文件夹通常可以是cleaned or re-configured以占用更少的空间。
毫无疑问,还有许多其他的小技巧,但***请不要重定向系统文件夹!***
替代方法
(Dis)-荣誉奖:以下是不是建议,而是一些替代方法。它们比上面的选项(应该足够好)风险更高,最好是如果您正在设置新的笔记本电脑或重新安装它,并希望摆脱讨厌的供应商恢复分区,您可以没有。
让我们坚定地陈述一下显而易见的事实:***使用这些工具每年都会丢失大量数据。咖啡或咖啡因第一。戴上眼镜看看周围调整任何马尾辫和胡须(女士也是)。用第三人称对自己说话。摆出一个明显疯狂的姿势,大声喊“我愿意!“真正致力于迫在眉睫的灾难!祝你好运!“火力效果”一团糟。好了,够了……我有过不好的经历-但没有巨大的灾难(敲敲木头)-与所有这些工具。说得够多了-小心,你的数据很重要。妻子的婴儿照片,你未提交的代码,等等...
diskmgmt.msc*或diskpart.exe**(Windows):打开分区管理器(
diskmgmt.msc
)并清除任何恢复分区或隐藏分区,然后扩展系统磁盘以填充整个物理磁盘或创建一个新的可见分区。gparted
的下一个要点。使用diskpart
(命令行)很容易把事情搞砸。*gparted(Linux):您可能被阻止从
diskmgmt.msc
(受保护的分区)删除恢复分区.如果你很坚持,你可以 Boot 到Linux Live Disc / System(从可移动介质引导),然后使用gparted
进行删除。gparted
应用程序,只要我能折腾它。没有冒犯gparted
的意思,但是很好地使用Windows是一个挑战。显然,备份对于此类风险工作至关重要且是强制性的。gparted
甚至允许您尝试在这一点上调整现有分区的大小。我从来没试过。祝你好运如果你尝试。“火在洞里!“.*克隆:有些使用映像工具或磁盘克隆功能(硬件)将旧磁盘克隆到更大的磁盘上。备份显然必不可少。离我的舒适区很远-只是提一下。与这个列表并不真正相关(它应该是关于获得更多磁盘空间的简单有效的措施)。
gparted
中也有这样的功能。从未测试过。*文件系统分配大小:使用的文件系统及其分配大小影响可用空间。我们从来没有花太多精力去看这个,但是分配大小问题可能会浪费很多空间:Would SSD drives benefit from a non-default allocation unit size?
这个答案的其余部分(下面)是在调试过程中编写的-我将保留它。它包含一般和通用调试选项。
VC+运行库
正如底部的链接所示,其他人也看到了同样的部署错误。在进行过多的调试之前,让我们尝试最简单的方法。请尝试从这里安装2017年(可能还有2015年)的VC++运行时:
可能的常规修复
This seems to be the better discussion online for this problem.我会首先尝试运行此工具的建议:Microsoft Install and Uninstall Troubleshooter。
你也可以试试this list of fixes。最重要的是,我也会尝试重新启动,然后再尝试释放任何潜在的锁定文件。就为了把过去一笔勾销。系统的事件日志可能包含有关所见错误的更多信息(有时甚至超出
msiexec.exe
日志中的信息)。ACL
您的TEMP文件夹的ACL(访问控制列表)是什么?开车?
UPDATE:同时确认隐藏文件夹
C:\Windows\Installer
存在,且权限设置正确。您需要在Windows资源管理器中打开show protected operating system files
才能看到此文件夹。详细日志
尝试为有问题的MSI安装创建适当的详细日志(比您参考的日志信息更多)。这给了你一些开始的东西来弄清楚发生了什么。You can find some information on how to do logging here。
我会为所有MSI安装启用日志记录,以便进行调试。请参阅installsite.org on logging(“* 全局适用于计算机上的所有设置 *”一节)了解如何执行此操作。
我更喜欢为开发和测试盒打开此默认日志记录。通常你会突然看到一个MSI错误,你希望你有一个日志-现在你可以,总是在
%tmp%
准备。快速测试
在您的例子中,我会转到
C:\ProgramData\Microsoft\VisualStudio\Packages\Microsoft.VisualStudio.MinShell.Msi,version=15.6.27421.1\
来查看磁盘上是否存在MSI包,然后我会在启用日志记录的情况下启动它:或者,我只需要双击MSI文件,看看我是否得到一个更好的,交互式的错误消息。您很可能需要详细日志来获取任何信息。
参见下面注解中的链接(具体错误)。
r8uurelv2#
只需检查
C:\WINDOWS\temp
和C:\WINDOWS\installer
。它们是存在的吗?它们是可写的吗?在我的例子中,我以前删除了
C:\WINDOWS\installer
,忘记了它,所以我必须重新创建它。fcwjkofz3#
如果禁用User Account Control(UAC),则会发生相同的错误。如果用户帐户控制处于关闭状态,Visual Studio安装程序无法向TEMP写入任何内容。解决方案-启用UAC。
在我的例子中,是Visual Studio 2019和Windows Server 2012 R2。