症状
用户有时会收到以下错误消息之一卸载过程中,通过添加/删除程序(或“应用和功能”设置应用程序):
错误1316指定的帐户已经存在。
而尝试从文件读取错误1316年出现网络错误:C:\ WINDOWS \ Installer程序\ NameOfOriginalSetup的.msi
其实这两个是完全一样的错误,第一条消息只显示了KB2918614(又名“安全修复”补丁),安装时,产品是不是白名单。 这只是错误代码被误认为是一般的系统错误 ,而不是实际的MSI错误在这种情况下。 否则,KB2918614无所谓。
错误1406无法写入值的关键。 请确认您有足够的权限访问该密钥,或与支持人员联系。
似乎是不太常见的。 由于该消息框包含一个“忽略”按钮,它允许卸载反正继续,用户propably不太愿意报告此错误。
日志文件
通过获得卸载日志文件msiexec -x {ProductCode} -l*vx LogFile.txt
。 搜索“值3”产生约错误位置的部件:
MSI (s) (B0:9C) [15:18:10:427]: Executing op: FeatureUnpublish(Feature=ProductFeature,,Absent=2,Component=iJm4+0tc4@uTvD')YKUXZ{NA8`o569(2MdBLg[rJ)
MSI (s) (B0:9C) [15:18:10:428]: Note: 1: 1402 2: UNKNOWN\Installer\Features\AFCEC7274CC7C0441A85705C47554DD5 3: 2
MSI (s) (B0:9C) [15:18:10:428]: Executing op: ActionStart(Name=InstallFiles,Description=Copying new files,Template=File: [1], Directory: [9], Size: [6])
MSI (s) (B0:9C) [15:18:10:428]: Executing op: ProgressTotal(Total=5,Type=0,ByteEquivalent=1)
MSI (s) (B0:9C) [15:18:10:428]: Executing op: SetTargetFolder(Folder=C:\Program Files\zett42\SpuriousFeatureAdvTest1\)
MSI (s) (B0:9C) [15:18:10:428]: Executing op: SetSourceFolder(Folder=1\zett42\xipmcfby\|zett42\SpuriousFeatureAdvTest1\)
MSI (s) (B0:9C) [15:18:10:428]: Executing op: ChangeMedia(,MediaPrompt=Please insert the disk: ,MediaCabinet=1\cab1.cab,BytesPerTick=65536,CopierType=1,,,SignatureRequired=0,,,IsFirstPhysicalMedia=1)
MSI (s) (B0:9C) [15:18:10:428]: Executing op: RegisterSharedComponentProvider(,,File=File2.txt,Component={3F28EEDB-866D-4201-8173-12532C657B6C},,ProductCode={727CECFA-7CC4-440C-A158-07C57455D45D},ProductVersion=1.0.0,PatchSize=0,PatchAttributes=0,PatchSequence=0,SharedComponent=0,IsFullFile=0)
MSI (s) (B0:9C) [15:18:10:428]: Executing op: FileCopy(SourceName=File2.txt,SourceCabKey=File2.txt,DestName=File2.txt,Attributes=512,FileSize=5,PerTick=65536,,VerifyMedia=1,,,,,CheckCRC=0,,,InstallMode=58982400,HashOptions=0,HashPart1=1397189395,HashPart2=108432067,HashPart3=-1009892414,HashPart4=374579663,,)
MSI (s) (B0:9C) [15:18:10:428]: File: C:\Program Files\zett42\SpuriousFeatureAdvTest1\File2.txt; To be installed; Won't patch; No existing file
MSI (s) (B0:9C) [15:18:10:428]: Resolving source.
MSI (s) (B0:9C) [15:18:10:428]: Using cached product context: machine assigned for product: AFCEC7274CC7C0441A85705C47554DD5
MSI (s) (B0:9C) [15:18:10:428]: Using cached product context: machine assigned for product: AFCEC7274CC7C0441A85705C47554DD5
MSI (s) (B0:9C) [15:18:10:429]: Resolving source to launched-from source.
MSI (s) (B0:9C) [15:18:10:429]: Setting launched-from source as last-used.
MSI (s) (B0:9C) [15:18:10:429]: PROPERTY CHANGE: Adding SourceDir property. Its value is 'C:\WINDOWS\Installer\'.
MSI (s) (B0:9C) [15:18:10:429]: PROPERTY CHANGE: Adding SOURCEDIR property. Its value is 'C:\WINDOWS\Installer\'.
MSI (s) (B0:9C) [15:18:10:429]: PROPERTY CHANGE: Adding SourcedirProduct property. Its value is '{727CECFA-7CC4-440C-A158-07C57455D45D}'.
MSI (s) (B0:9C) [15:18:10:429]: SOURCEDIR ==> C:\WINDOWS\Installer\
MSI (s) (B0:9C) [15:18:10:429]: SOURCEDIR product ==> {727CECFA-7CC4-440C-A158-07C57455D45D}
MSI (s) (B0:9C) [15:18:10:429]: Using cached product context: machine assigned for product: AFCEC7274CC7C0441A85705C47554DD5
MSI (s) (B0:9C) [15:18:10:429]: Determining source type
MSI (s) (B0:9C) [15:18:10:429]: Note: 1: 2203 2: C:\WINDOWS\Installer\SpuriousFeatureAdvTest1.msi 3: -2147287038
MSI (s) (B0:9C) [15:18:10:429]: Note: 1: 1316 2: C:\WINDOWS\Installer\SpuriousFeatureAdvTest1.msi
MSI (s) (B0:9C) [15:18:10:429]: SECREPAIR: Error determining package source type
MSI (s) (B0:9C) [15:18:10:429]: SECUREREPAIR: SecureRepair Failed. Error code: 524FD15800
MSI (s) (B0:9C) [15:18:11:146]: Note: 1: 2205 2: 3: Error
MSI (s) (B0:9C) [15:18:11:146]: Note: 1: 2228 2: 3: Error 4: SELECT `Message` FROM `Error` WHERE `Error` = 1709
MSI (s) (B0:9C) [15:18:11:146]: Product: zett42 SpuriousFeatureAdvTest1 -- Error 1316. Das angegebene Konto ist bereits vorhanden.
MSI (c) (C4:38) [15:18:10:436]: Font created. Charset: Req=0, Ret=0, Font: Req=MS Shell Dlg, Ret=MS Shell Dlg
Error 1316. Das angegebene Konto ist bereits vorhanden.
(最后的日志行是“指定的帐户已经存在。”在德语)。
由于可以从日志可以看出,卸载尝试实际文件“FILE2.TXT” 复制到硬盘驱动器(寻找FileCopy
条目)。 这似乎并没有什么意义,当然这当源不可失败。
同样有趣的是这是进一步透露了日志中的功能和组件的状态:
MSI (s) (B0:9C) [15:18:10:387]: Feature: ProductFeature; Installed: Advertise; Request: Absent; Action: Absent
MSI (s) (B0:9C) [15:18:10:387]: Component: File1; Installed: Absent; Request: Null; Action: Null; Client State: Unknown
MSI (s) (B0:9C) [15:18:10:387]: Component: File2; Installed: Local; Request: Null; Action: Local; Client State: Absent
需要注意的是功能“ProductFeature”有“ 安装:广告 ”的状态,虽然功能是本地安装。 “ 动作:本地 ”的组件“文件2”匹配我们在日志中看到的,这是Windows安装程序想要卸载过程中本地安装的文件! 同样,这没有任何意义,我。
注册表缺陷
我发现,对问题的机器,产品的随机成分注册表项不能被卸载,缺失:
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Components\<ComponentKey>
后手动添加缺少的注册表项,包括全新安装状态的所有值,该产品可以成功卸载。
事实证明,任何组件注册表项丢失的情况下,Windows安装程序确定包含这些成分,被“标榜”的功能的状态。 这仍然不足以引起卸载错误1316。 事实上,只有当组件文件在物理磁盘上的缺失,对本地副本试图通过Windows安装程序触发。
最小实施例和再现步骤
我还没有能够重现问题“自然”,即以同样的方式,因为它发生在客户机。 只有通过手动删除上述组分的注册表项之一,我可以人为地重现该问题。
- 构建最小的WiX的设置是安装两个文件,“FILE1.TXT”和“FILE2.TXT”:
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<?define ProductName = "SpuriousFeatureAdvTest1"?>
<?define Manufacturer = "zett42"?>
<?if $(var.Platform) = x64 ?>
<?define PlatformProgramFilesFolder = "ProgramFiles64Folder" ?>
<?else ?>
<?define PlatformProgramFilesFolder = "ProgramFilesFolder" ?>
<?endif ?>
<Product Id="*" Name="$(var.Manufacturer) $(var.ProductName)" Language="1033" Version="1.0.0.0" Manufacturer="$(var.Manufacturer)" UpgradeCode="{65CEA630-EFC0-4199-86EE-88867AABEDEF}">
<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
<MajorUpgrade DowngradeErrorMessage="A newer version of $(var.ProductName) is already installed." />
<MediaTemplate />
<Feature Id="ProductFeature" Title="$(var.ProductName)" Level="1" AllowAdvertise="no" >
<ComponentGroupRef Id="ProductComponents" />
</Feature>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="$(var.PlatformProgramFilesFolder)">
<Directory Id="MANUFACTURERFOLDER" Name="$(var.Manufacturer)">
<Directory Id="INSTALLFOLDER" Name="$(var.ProductName)" />
</Directory>
</Directory>
</Directory>
<ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
<Component Id="File1" Guid="{19819F06-DD45-4B48-BD00-810DEF7C0297}">
<File Source="File1.txt"/>
</Component>
<Component Id="File2" Guid="{3F28EEDB-866D-4201-8173-12532C657B6C}">
<File Source="File2.txt"/>
</Component>
</ComponentGroup>
</Product>
</Wix>
安装MSI文件。
删除属于组件“文件1”下面的注册表项:
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Components\60F9189154DD84B4DB0018D0FEC72079
删除属于任何相同功能的其他组件,在这种情况下,“文件2”的密钥文件:
c:\Program Files\zett42\SpuriousFeatureAdvTest1\File2.txt
尝试卸载通过“添加/删除程序”或“应用程序和功能”的产品。
卸载失败,出现“Error 1316”的字样。
尝试的解决方案/解决方法
支持 :微软程序安装和卸载问题排查成功删除有问题的产品。
我试图禁用该功能( 广告 <Feature AllowAdvertise="no"/>
但它不会改变任何东西。
题
可能是什么问题的可能原因,以及如何真正解决呢?
- 在建立成分违反规则。 虽然我不能排除这个原因,这似乎不太可能,因为缺少的组件注册表项(S)是随机的,只有用户的一小部分会受到影响。
- 的第三方软件,如AV或注册表清理实用程序的干扰。
- 磁盘或存储故障。
- 错误的Windows安装程序。
- 还要别的吗?
搜索错误信息显示,这个问题是相当普遍的。 在某些情况下,该错误是由微小的升级过程中改变了MSI的文件名引起的。 这绝对不是这里的情况,因为我们没有做轻微的升级和有问题的设置的MSI文件没有重命名。 正如上面所解释的很清楚,有一个注册表缺陷 。 一个可能类似的情况进行了说明这里 ,但得到的答复并没有解释什么,只是指向MS故障排除工具。