Windows 应用认证工具包测试结果:应用未创建所需的注册表项
Posted
技术标签:
【中文标题】Windows 应用认证工具包测试结果:应用未创建所需的注册表项【英文标题】:Windows App Certification Kit Test Result : app didn't create the require registry entries 【发布时间】:2014-01-17 09:56:31 【问题描述】:我使用 installshield 2009 创建了一个应用程序安装程序。该应用程序是一个 32 位应用程序。 现在作为我们客户的要求,我们的软件必须通过 Windows 应用认证工具包测试 (WACK)。然后我尝试作为桌面应用进行测试,结果失败了。
注册表填充测试检测到以下错误:
应用没有创建所需的注册表项。 写 适当的添加/删除程序值 发现错误:注册表 人口测试检测到以下错误:应用程序没有创建 必需的注册表项。 非可选值“DisplayName”是 程序缺失或无效。 可选值 程序的“InstallLocation”缺失或无效。 A 程序的非可选值“Publisher”缺失或无效。 程序的可选值“UninstallString”缺失或无效 . 非可选值“VersionMajor”缺失或无效 程序 . 缺少非可选值“VersionMinor”或 对程序无效。 非可选值“MajorVersion”是 程序缺失或无效。 非可选值 程序的“MinorVersion”缺失或无效。 可选 程序的值“InstallLocation”缺失或无效。
我在另一台已安装的机器上使用 regedit 检查。 注册表值正确,上述键均不为空或无效
Windows 注册表编辑器 5.00 版
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall9DAA8BAB-2DD2-4BD5-A3A2-ACB2A28B8041] "AuthorizedCDFPrefix"="" "评论"="" "联系方式"="" "DisplayVersion"="9.1.0" "HelpLink"="" "HelpTelephone"="(123) 123-1234" "安装日期"="20140115" "InstallLocation"="C:\Application Sample\" "InstallSource"="C:\Install\" "ModifyPath"=hex(2):4d,00,73,00,69,00,45,00,78,00,65,00,63,00,2e,00,65,00,78,\ 00,65,00,20,00,2f,00,58,00,7b,00,39,00,44,00,41,00,41,00,38,00,42,00,41,00, \ 42,00,2d,00,32,00,44,00,44,00,32,00,2d,00,34,00,42,00,44,00,35,00,2d,00,41, \ 00,33,00,41,00,32,00,2d,00,41,00,43,00,42,00,32,00,41,00,32,00,38,00,42,00, \ 38,00,30,00,34,00,31,00,7d,00,00,00 "NoModify"=dword:00000001 "NoRepair"=dword:00000001 "Publisher"="Sample Publisher" "Readme"="" "Size"="" "EstimatedSize"=dword:0002861e "UninstallString"=hex(2):4d,00,73,00,69,00,45,00,78,00,65,00,63,00,2e,00,65,00,\ 78,00,65,00,20,00,2f,00,58,00,7b,00,39,00,44,00,41,00,41,00,38,00,42,00,41, \ 00,42,00,2d,00,32,00,44,00,44,00,32,00,2d,00,34,00,42,00,44,00,35,00,2d,00, \ 41,00,33,00,41,00,32,00,2d,00,41,00,43,00,42,00,32,00,41,00,32,00,38,00,42, \ 00,38,00,30,00,34,00,31,00,7d,00,00,00 "URLInfoAbout"="www.publisher.com" "URLUpdateInfo"="" "VersionMajor"=dword:00000009 "VersionMinor"=dword:00000001 "WindowsInstaller"=dword:00000001 "版本"=dword:09010000 "Language"=dword:00000409 "DisplayName"="应用示例"
我还检查了与 WACK 相关的 Microsoft KB,它告诉您此错误是由于无效的注册表值或在安装过程中未创建注册表值而发生的。 有没有人有同样的经历?如何解决? 我尝试谷歌它,但没有人能给出确切的解决方案如何解决这个问题
【问题讨论】:
这是您的安装添加的Uninstall
下的唯一键吗?您是否包含任何可能添加无效密钥的先决条件?
还有访问 2003 运行时和一些第 3 方 pdf 转换器。是不是也被这个 WACK 的东西检查了?我相信这两个具有完整的注册表项,但我会进一步检查。感谢您的评论
【参考方案1】:
您上面提到的注册表项是由 Windows Installer 自动创建的,MSI 包不应该创建它们。您的 IS 项目是否有 EXE 或 MSI 作为输出?
正如您在以下MSDN article 第 5.5 点中看到的,Microsoft 声明相同,由于 Windows Installer 在计算机上注册您的安装程序,MSI 软件包安装会自动创建条目。
【讨论】:
所以msi包不应该创建注册表项?并且应该使用单独的应用程序创建注册表项?我尝试创建在 UNINSTALL 键下创建注册表项的 EXE 应用程序,但结果仍然失败。是的,我有一个 EXE 或 MSI 作为输出。 你误解了我的意思。您不需要创建其他 EXE,MSI 不会自行运行,它只是一个简单的 Windows Installer 数据库文件。 MSI 的实际安装由 Windows Installer 的系统服务 (msiexec.exe) 完成,该服务应为机器上安装的每个 MSI 创建一组这些注册表项。话虽如此,注册表项不应包含在您的 MSI 的注册表 (msdn.microsoft.com/en-us/library/aa371168(v=vs.85).aspx) 中,也不应编写另一个应用程序来创建这些条目。 哦,很抱歉造成误会。我还是这个 installshield 的新手。好的,我现在明白你的答案了。但是我仍然对如何通过测试感到困惑。感谢您的回答【参考方案2】:我发现了问题,这是因为安装程序创建了一个安装程序,但在卸载过程中安装程序没有被删除。此快捷方式还创建一些注册表并提供一些与已安装应用程序相关的参数。
为了解决这个问题,我查看了快捷方式的创建过程并为快捷方式提供了正确的卸载过程。
【讨论】:
【参考方案3】:在花太多时间调整安装程序之前,我建议先在另一台机器上运行 WACK。我花了两天多的时间在网上搜索并“修复”我的 MSI 文件,只是为了发现同一个 MSI 在另一台机器上通过了 WACK 测试!
【讨论】:
以上是关于Windows 应用认证工具包测试结果:应用未创建所需的注册表项的主要内容,如果未能解决你的问题,请参考以下文章
如何修复 Windows App 认证工具包平台版本启动失败