代码之家  ›  专栏  ›  技术社区  ›  Philip Wallace

如何诊断“Microsoft.NET ClickOnce启动实用程序已停止工作”?

  •  8
  • Philip Wallace  · 技术社区  · 15 年前

    我们使用从文件路径安装的ClickOnce部署应用程序。对于24个版本,它一直工作得很好-现在,在版本25上,一旦应用程序安装并启动,我会得到以下错误:

    alt text http://i49.tinypic.com/zk4krl.png

    如果我在同一台机器上测试以前的部署,它就会工作。

    在哪里我甚至可以开始寻找这个错误的原因?我已经检查了Windows事件日志-没有。

    编辑: 我注意到,当显示对话框时,临时XML文件“wer561d.tmp.werInternalMetadata.xml”在我的temp文件夹中生成。以下是内容(其中可能包含对比我更了解这一领域的人有帮助的线索):

    <?xml version="1.0" encoding="UTF-16"?>
    <WERReportMetadata>
        <OSVersionInformation>
            <WindowsNTVersion>6.1</WindowsNTVersion>
            <Build>7600 </Build>
            <Product>(0x4): Windows 7 Enterprise</Product>
            <Edition>Enterprise</Edition>
            <BuildString>7600.16385.x86fre.win7_rtm.090713-1255</BuildString>
            <Revision>1</Revision>
            <Flavor>Multiprocessor Free</Flavor>
            <Architecture>X86</Architecture>
            <LCID>1033</LCID>
        </OSVersionInformation>
        <ProblemSignatures>
            <EventType>CLR20r3</EventType>
            <Parameter0>applaunch.exe</Parameter0>
            <Parameter1>2.0.50727.4927</Parameter1>
            <Parameter2>4a275abe</Parameter2>
            <Parameter3>mscorlib</Parameter3>
            <Parameter4>2.0.0.0</Parameter4>
            <Parameter5>4a275af7</Parameter5>
            <Parameter6>4f3</Parameter6>
            <Parameter7>0</Parameter7>
            <Parameter8>System.Security.Security</Parameter8>
        </ProblemSignatures>
        <DynamicSignatures>
            <Parameter1>6.1.7600.2.0.0.256.4</Parameter1>
            <Parameter2>1033</Parameter2>
        </DynamicSignatures>
        <SystemInformation>
          -- removed for privacy reasons --
        </SystemInformation>
    </WERReportMetadata>
    

    另一个关键点是,我正在通过Visual Studio发布,没有进行手动清单编辑。

    6 回复  |  直到 11 年前
        1
  •  9
  •   Philip Wallace    15 年前

    我想我已经发现了问题,尽管我不知道是怎么发生的。将当前项目文件与一个已工作的版本进行比较,其中除其他更改外,还显示以下差异:

    由此:

    <GenerateManifests>true</GenerateManifests>
    

    对此:

    <GenerateManifests>false</GenerateManifests>
    <TargetZone>LocalIntranet</TargetZone>
    <ApplicationManifest>Properties\app.manifest</ApplicationManifest>
    

    如果删除targetzone和applicationmanifest,并将generatemanifests设置为false,则可以。

        2
  •  2
  •   Sampson    15 年前

    您是否将应用程序从完全信任更改为部分信任?这就是它的样子。内部网区域是部分信任安全的一部分。在项目属性页的“安全”选项卡中查找。

    其次,在“图标和清单”项目属性页的“应用程序”选项卡中,清单字段的值是什么?它是否创建没有清单的应用程序?尝试将其设置为“使用默认设置嵌入清单”,看看是否有帮助。

        3
  •  1
  •   user333724    15 年前

    ClickOnce仅在应用程序是受信任的应用程序(S.属性->安全性)且清单不包含任何更高的UAC安全要求(如以下manfest文件)时才正常工作:

    <?xml version="1.0" encoding="utf-8"?>
    <asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <assemblyIdentity version="1.0.0.0" name="MaxLine5651v1" type="win32" />
      <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
        <security>
          <requestedPrivileges>
            <requestedExecutionLevel level="requireAdministrator"/>
          </requestedPrivileges>
        </security>
      </trustInfo>
    </asmv1:assembly>
    

    当您有请求更高权限的清单时,ClickOnce将不接受发布您的项目。

    在这方面我也在努力。我需要一个应用程序来访问注册表、日志和防火墙设置;我希望它可以在线更新。不幸的是,它不适用于ClickOnce。欢迎有任何想法。

    ——Gokhan

        4
  •  0
  •   Marcel Gosselin    15 年前

    根据 MSDN ,您可以查看日志文件以帮助您。 还有一个 Troubleshooting ClickOnce Deployments 可以帮助您的页面。

        5
  •  0
  •   Andrew    15 年前

    它在检查新版本时似乎崩溃了,因为您说它是在更新之后发生的。

    • 您是否尝试重新发布和删除现有版本,例如applicationfiles\app_1_0_0_1..25?
    • 你把这个报告给女士了吗 MSDN Forums 对于C1?
    • 代码中发生了什么变化(新引用等?)

    很难说,因为窗口错误报告的东西似乎从来没有提供有用的信息,但我敢打赌你在那里会有好运的。我通常这样做。

    而且,我知道这是不可能的,因为它引用了system.security。您是否更改了任何内容,这个版本的network文件夹上的perms是否相同,您是否添加了任何安全需求?

        6
  •  -1
  •   Graham Laight    11 年前

    我们对应用程序做了一个很小的更改,但我们不知道,这阻止了应用程序的运行。在花了大量时间调试ClickOnce问题之后,我最终尝试独立运行应用程序并发现了问题。

    在这种情况下,错误消息是误导性的。