none
Windows App Cert Kit验证程序导致windows假死

    问题

  • 你好,我从开始界面打开app cert来验证我的一个metro风格的程序,验证了一个多小时还是没结束,看起来象是死了,界面最后就停留在windows的开始界面。这时鼠标还能移动,但点击任何地方都没反应,键盘的ctrl+alt+del还能起作用。

    我试过好几次,每次都这样,期间肯定没动过键盘鼠标。不知道是什么原因。

    我的metro风格程序的特殊地方:

        主程序是metro风格的程序,但里面有两类dll不是metro风格的。

        一类dll是vc2008编译的,里面有传统的win32 socks调用的,我是直接拷到win8上的appx目录下用的。

        另一类则是由vc2011beta版编译的,工程文件是由vc2008的工程文件转换而来的,所以也不是metro风格的dll, 由主程序调用。

    程序的结构如下:

    metro风格主程序 -〉vc2011beta编译的win RT dll --> vc2011 beta编译的非metro风格的dll(include了win32 socks头文件) -> vc2008编译的dll(包含win32 socks调用)

     我知道这不符合规范,但程序在win8 metro模式下能正常跑起来,但就是app cert kit验证时会造成app cert kit的工作不正常,造成windows假死的现象,希望能得到指点,谢谢!

    2012年5月14日 9:40

答案

  • 谢谢版主的回复,我昨天用命令行的方式试了试,发现原来不是假死,是时间太长了。我程序运行后放在那里,过了10几分钟又出现“”假死“”的现象,也没管它, 出门打了球(大概2小时)回来后发现竟然运行结束了。这个也太慢了点:)

    如果您需要日志,我可以发邮件给你,有197K。

    2012年5月21日 2:23
  • 看了你的日志,主要有几个问题。

    1. 你所用的几个dll没有通过二进制级别的验证,你需要根据 

    这几个选项,在编译的时候进行设置。

    2. 你的程序中有调用了Metro中不支持的API, 请注意,要通过测试,所有的Win32 API必须是列在 http://msdn.microsoft.com/en-us/library/windows/apps/br205757.aspx

    3. 你的应用启动过慢,检查是否有过多的逻辑在启动的时候被执行。

    4. 你的资源中的几个Logo图像超出限制,请注意日志中提示的大小,去修改一下。

    5. 最后,有几个dll是调试模式下生成,请注意,要通过安装验证,所有的dll都必须是release下生成的。


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年5月22日 7:12
    版主

全部回复

  • 这个能否通过,取决于你的代码本身,和使用的API是否符合规范,至于是否是其他编译器提供的库关系不大。请参考 http://msdn.microsoft.com/en-us/library/windows/apps/hh846297.aspx 来详细核对你的内容和代码。

    关于超时假死,能否提供详细的日志。请在命令行下,通过 C:\Program Files\Windows Kits\8.0\App Certification Kit> appcert.exe test -apptype metrostyle -packagefullname [package full name] -reportoutputpath [report file name] 命令来测试,详细参考(http://msdn.microsoft.com/en-us/library/windows/apps/hh694081.aspx),你可以通过设置一个安装的超时时间,例如

    appcert test -apptype metrostyle -packagefullname microsoft.devx.appx.helloworld_1.0.0.0_neutral_NorthAmerica_ac4zc6fex2zjp -waittimeout 900 -reportoutputpath d:\Output\MyReport.xml


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年5月15日 3:44
    版主
  • 还有,是否你的App启动逻辑中有等待用户输入的部分,这部分可能会导致测试无法进行。请确定你有没有设计了一定的超时。

    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年5月15日 3:45
    版主
  • 谢谢版主的回复,我昨天用命令行的方式试了试,发现原来不是假死,是时间太长了。我程序运行后放在那里,过了10几分钟又出现“”假死“”的现象,也没管它, 出门打了球(大概2小时)回来后发现竟然运行结束了。这个也太慢了点:)

    如果您需要日志,我可以发邮件给你,有197K。

    2012年5月21日 2:23
  • 可以阿, 发送至 v-bobbao at microsoft dot com ,帮你参考一下。

    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年5月21日 3:02
    版主
  • 看了你的日志,主要有几个问题。

    1. 你所用的几个dll没有通过二进制级别的验证,你需要根据 

    这几个选项,在编译的时候进行设置。

    2. 你的程序中有调用了Metro中不支持的API, 请注意,要通过测试,所有的Win32 API必须是列在 http://msdn.microsoft.com/en-us/library/windows/apps/br205757.aspx

    3. 你的应用启动过慢,检查是否有过多的逻辑在启动的时候被执行。

    4. 你的资源中的几个Logo图像超出限制,请注意日志中提示的大小,去修改一下。

    5. 最后,有几个dll是调试模式下生成,请注意,要通过安装验证,所有的dll都必须是release下生成的。


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年5月22日 7:12
    版主
  • 你的意思是说app cert速度这么慢是因为这些问题引起的?

    2012年6月1日 1:18
  • 这些肯定是问题,必须解决了才可以通过验证 ,  速度慢似比较正常的现象,因为测试的项目过多且繁杂,如果这些问题解决了, 验证能够通过,我想即使慢也是值得的.不然就没有意义了.

    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年6月1日 3:06
    版主
  • Got u, thanks a lot!

    2012年6月7日 2:10