Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 8 Windows Installer";此操作仅对当前安装的产品有效";-&引用;MSI_DBG:提供的描述符小于最小大小”;_Windows 8_Wix_Windows Installer - Fatal编程技术网

Windows 8 Windows Installer";此操作仅对当前安装的产品有效";-&引用;MSI_DBG:提供的描述符小于最小大小”;

Windows 8 Windows Installer";此操作仅对当前安装的产品有效";-&引用;MSI_DBG:提供的描述符小于最小大小”;,windows-8,wix,windows-installer,Windows 8,Wix,Windows Installer,我在Windows8机器上运行WiX安装程序时遇到了一个奇怪的问题。当我单击msi时,我会收到消息“此操作仅对当前安装的产品有效”。运行带有日志记录的msi显示以下内容: === Verbose logging started: 3/11/2014 9:46:49 Build type: SHIP UNICODE 5.00.9600.00 Calling process: C:\WINDOWS\system32\msiexec.exe === MSI (c) (20:C4) [09:46:

我在Windows8机器上运行WiX安装程序时遇到了一个奇怪的问题。当我单击msi时,我会收到消息“此操作仅对当前安装的产品有效”。运行带有日志记录的msi显示以下内容:

=== Verbose logging started: 3/11/2014  9:46:49  Build type: SHIP UNICODE 5.00.9600.00  Calling process: C:\WINDOWS\system32\msiexec.exe ===
MSI (c) (20:C4) [09:46:49:933]: Font created.  Charset: Req=0, Ret=0, Font: Req=MS Shell Dlg, Ret=MS Shell Dlg

MSI (c) (20:C4) [09:46:49:934]: Font created.  Charset: Req=0, Ret=0, Font: Req=MS Shell Dlg, Ret=MS Shell Dlg

MSI (c) (20:40) [09:46:49:956]: Resetting cached policy values
MSI (c) (20:40) [09:46:49:956]: Machine policy value 'Debug' is 0
MSI (c) (20:40) [09:46:49:956]: ******* RunEngine:
           ******* Product: myinstaller.msi
           ******* Action: 
           ******* CommandLine: **********
MSI (c) (20:40) [09:46:49:976]: Machine policy value 'DisableUserInstalls' is 0
MSI (c) (20:40) [09:46:50:014]: Note: 1: 1402 2: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer 3: 2 
MSI (c) (20:40) [09:46:50:766]: SOFTWARE RESTRICTION POLICY: Verifying package --> 'E:\myinstaller.msi' against software restriction policy
MSI (c) (20:40) [09:46:50:766]: Note: 1: 2262 2: DigitalSignature 3: -2147287038 
MSI (c) (20:40) [09:46:50:766]: SOFTWARE RESTRICTION POLICY: E:\myinstaller.msi is not digitally signed
MSI (c) (20:40) [09:46:50:778]: SOFTWARE RESTRICTION POLICY: E:\myinstaller.msi is permitted to run at the 'unrestricted' authorization level.
MSI (c) (20:40) [09:46:50:793]: Cloaking enabled.
MSI (c) (20:40) [09:46:50:793]: Attempting to enable all disabled privileges before calling Install on Server
MSI (c) (20:40) [09:46:50:799]: End dialog not enabled
MSI (c) (20:40) [09:46:50:799]: Original package ==> E:\myinstaller.msi
MSI (c) (20:40) [09:46:50:799]: Package we're running from ==> C:\Users\PATRI_~1\AppData\Local\Temp\50d229a.msi
MSI (c) (20:40) [09:46:50:804]: MSI_DBG: Provided descriptor less than minimum size
MSI (c) (20:40) [09:46:50:807]: APPCOMPAT: Compatibility mode property overrides found.
MSI (c) (20:40) [09:46:50:808]: APPCOMPAT: looking for appcompat database entry with ProductCode ''.
MSI (c) (20:40) [09:46:50:808]: APPCOMPAT: no matching ProductCode found in database.
MSI (c) (20:40) [09:46:50:849]: MSCOREE not loaded loading copy from system32
MSI (c) (20:40) [09:46:50:859]: Machine policy value 'TransformsSecure' is 0
MSI (c) (20:40) [09:46:50:859]: User policy value 'TransformsAtSource' is 0
MSI (c) (20:40) [09:46:50:860]: APPCOMPAT: looking for appcompat database entry with ProductCode ''.
MSI (c) (20:40) [09:46:50:860]: APPCOMPAT: no matching ProductCode found in database.
MSI (c) (20:40) [09:46:50:860]: Transforms are not secure.
MSI (c) (20:40) [09:46:50:860]: PROPERTY CHANGE: Adding MsiLogFileLocation property. Its value is 'E:\installlog.txt'.
MSI (c) (20:40) [09:46:50:860]: Command Line: CURRENTDIRECTORY=E:\ CLIENTUILEVEL=0 CLIENTPROCESSID=800 CURRENTMEDIAVOLUMELABEL=? 
MSI (c) (20:40) [09:46:50:860]: PROPERTY CHANGE: Adding PackageCode property. Its value is '{9C098FBE-3C8F-452D-A0C4-B543717B6E3D}'.
MSI (c) (20:40) [09:46:50:861]: Product Code passed to Engine.Initialize:           ''
MSI (c) (20:40) [09:46:50:861]: Product Code from property table before transforms: ''
MSI (c) (20:40) [09:46:50:861]: Product Code from property table after transforms:  ''
MSI (c) (20:40) [09:46:50:861]: Failing install, missing product code
This action is only valid for products that are currently installed.
E:\myinstaller.msi
MSI (c) (20:40) [09:46:50:862]: Note: 1: 1708 
MSI (c) (20:40) [09:46:50:863]: Product:  -- Installation failed.

MSI (c) (20:40) [09:46:50:865]: Windows Installer installed the product. Product Name: . Product Version: . Product Language: . Manufacturer: . Installation success or error status: 1605.

MSI (c) (20:40) [09:46:50:871]: MainEngineThread is returning 1605
=== Verbose logging stopped: 3/11/2014  9:46:50 ===`
奇怪的是,相同的安装程序在win7机器上运行良好,而稍旧的安装程序版本在win8机器上运行良好。我不知道为什么产品代码是空的,因为它在win7上有一个有效的guid

有人知道我为什么会犯这个错误吗

编辑: 使用Orca,我可以看到MSI的ProductCode属性设置为有效的GUID


EDIT2:通过使用Orca替换产品代码中的GUID以及另一版本安装程序中的GUID,我可以让它工作,但是当使用ProductCode='*'从WiX构建时,即使放在产品代码中的GUID看起来是有效的,它也不工作。

只有几点建议: 1.有效的guid包含所有大写字符,因此如果Windows 8收紧了规则,请检查是否正确。
2.appcompat覆盖意味着存在一些应用程序兼容性问题,例如假装系统是(例如)Windows 7或XP,以便安装它,否则它不会安装在Windows 8上。或者Windows在内部假装这样做。在Properties->compatibility中查看MSI文件是否具有某些兼容性设置。那可能是在什么地方把事情搞砸了

我将尝试我的答案,有点相反:

首先,当您得到错误的第一部分时,我可以给您一个简单的示例(“此操作仅对..有效”)。 在命令行上尝试虚拟卸载不存在的MSI:

msiexec /x {12345678-F0B2-36AF-8DF4-1DF6B63FC7B4}
(用“是”确认问题,请参见。)

因此:

需要更多信息,了解(您认为:-)您的设置正在执行的操作

日志文件摘录是不够的。至少我不确定安装程序在这里做什么:卸载、更新、修复、修补

在这些场景中,MSI肯定是使用过时的MSI文件或产品代码调用的。
通过简单的首次安装,您不会收到此消息。

您是否与不同的用户登录并在Windows 8计算机上使用或安装该软件包?如果是这样的话,我要做的第一件事就是在全新的Windows 8机器上尝试设置。如果有效,请立即卸载,并告知结果

您还应该检查现有的Windows 8计算机,并查看添加/删除程序,以确定您的软件包是否列在那里。可能有多个副本什么都没有-您的软件包不包含ALLUSERS=1,这意味着默认情况下可以按每个用户安装。尝试卸载那里的所有条目

有关SCCM中出现的每用户问题,请参见此处:

在互联网上搜索“安装失败,缺少产品代码”时,还有其他几个条目,都有返回代码1605

不幸的是,我无法从中找到一个明确的解决方案或理由。唯一的共同点是,它们都处理.msm文件。我们记得:。msm文件(合并模块)没有自己的产品代码,并且不是单独可安装的。 只能安装.msi文件


我的猜测是:要么在过程中有人试图直接安装合并模块,要么在合并合并模块时出现生成错误,从而导致该问题。

其他可能性,而不是相互排斥的:

  • 你的微星在某种程度上是奇怪的,这是不明显的。例如,如果安装没有组件表的MSI文件,就会出现奇怪的错误。如果MSI中没有文件或其他组件,它将无法正常工作,错误将很奇怪。如果它在W7上工作,这似乎不太可能

  • 系统在某种程度上被破坏了。有关产品的注册表项可能会被按喇叭。Windows可能正在系统上查找包代码或产品代码的其他版本,并发现错误数据。如果您已经安装了具有相同软件包或产品代码的安装程序,则更可能发生这种情况。如果是这样的话,将产品和包guid都更改为新值可能会解决这个问题。如果您正在对同一个MSI进行重复测试,并且该MSI严重失败,则也可能导致问题。使用虚拟机进行MSI测试,以免损坏硬件机器


  • 我终于发现这是在通过闪存驱动器将安装程序从我的win7机器传输到win8机器的过程中造成的。我通过网络驱动器传输了相同的文件,当然效果很好。很明显,产品代码中的guid,或者整个安装程序,在闪存驱动器上损坏了,这是导致错误的原因之一


    谢谢你为我调查这一切,我感谢你的时间,并为奇怪的错误道歉

    刚刚发生在我身上。事实证明,我们的构建脚本在每个构建上都会生成一个唯一的产品UID(以强制执行主要升级),最近对构建脚本的更改导致UID为空。

    产品代码是一个有效的guid(使用Orca检查)。我检查了兼容性属性,它没有任何设置。我尝试将其设置为与以前版本的windows兼容,但我得到了相同的错误。当我双击安装程序时会发生这种情况,因此它应该进行安装。但是当我添加日志时,我使用这个命令行调用msiexec/I“myinstaller.msi”/L*V installlog.txt。我用完整的日志编辑了这个问题。请参阅我关于.msm文件的最新答案,请参阅特别说明。及:1。请尝试使用msiexec命令行(alread具有管理员权限)并告诉我们您使用的完整行,包括文件名。2.请验证您的MSI,例如使用Orca–本例中的1605错误为错误\u未知\u产品“此操作仅对pr有效