【发布时间】:2017-01-21 00:41:50
【问题描述】:
尝试在未安装在执行 Windows 批处理命令的 Jenkins 会话中的应用程序上运行 appcert (WACK) 时,在此处出现“错误 0x80070005:添加磁贴失败并出现意外错误”。我编写了一个简单的 C# 包装器以在提升的用户模式下调用 appcert。 Wrapper 和基本命令行在 Jenkins 之外在一个未提升的 cmd 窗口中的同一个框中工作......挠头......
"C:\Program Files (x86)\Windows Kits\10\App Certification Kit\appcert.exe" reset
if %errorlevel% neq 0 exit /b %errorlevel%
"C:\Program Files (x86)\Windows Kits\10\App Certification Kit\appcert.exe" test -appxpackagepath %WORKSPACE%\UWP_0.9.%BUILD_NUMBER%.0_x86_x64_arm.appxbundle -reportoutputpath %WORKSPACE%\wack.xml
if %errorlevel% neq 0 exit /b %errorlevel%
16:32:04 Successfully reset the testing configuration.
16:32:11 Beginning execution of task Detect app type from package.
16:32:11 Task Detect app type from package execution result was success.
16:32:11 Note: Test application type - UapApp.
16:32:11 Beginning execution of task Extract files from package.
16:32:11 Beginning execution of task Performs AppX deployment/cleanup in the IDE scenario..
16:32:11 Task Extract files from package execution result was success.
16:32:11 Root "Trusted Root Certification Authorities"
16:32:11 Signature matches Public Key
16:32:11 Related Certificates:
16:32:11
16:32:11 Exact match:
16:32:11 Element 7:
16:32:11 Serial Number: 1b659911670d2b9f436f7b922e12ed51
16:32:11 Issuer: CN=ED346674-0FA1-4272-85CE-3187C9C86E26
16:32:11 NotBefore: 1/10/2017 4:01 PM
16:32:11 NotAfter: 1/10/2018 10:01 PM
16:32:11 Subject: CN=ED346674-0FA1-4272-85CE-3187C9C86E26
16:32:11 Signature matches Public Key
16:32:11 Root Certificate: Subject matches Issuer
16:32:11 Cert Hash(sha1): 7a 5f 2f 31 7a 88 82 fd e5 12 f6 fb 2d 37 46 1f 29 ff
01 ef
16:32:11
16:32:11 Certificate "ED346674-0FA1-4272-85CE-3187C9C86E26" already in store.
16:32:11 CertUtil: -addstore command completed successfully.
16:32:11 Task Performs AppX deployment/cleanup in the IDE scenario.
execution result was failure.
16:32:11
16:32:11 error 0x80070005: Adding a tile failed with unexpected error.
【问题讨论】:
-
if %errorlevel% neq 0 exit /b %errorlevel%可以替换为if errorlevel 1 exit /B,它的作用完全相同,但速度更快。命令if和exit不会更改先前命令/应用程序的当前错误级别(退出/返回代码)。if errorlevel 1表示 IF 上一个命令的退出代码大于或等于 1 THEN ...应用程序通常不会以负值退出。在命令提示符窗口if /?中运行并查看 Microsoft 支持文章 Testing for a Specific Error Level in Batch Files。
标签: windows batch-file jenkins wack