2

这是一台带有 Service Pack 1 的 Windows 7 机器,我使用 x86 目标平台配置发布了一个 C# WPF 应用程序,因为它也需要安装在 XP 机器上。

我正在处理的问题正在变得令人讨厌。该应用程序在 Visual Studio 2008 调试模式下运行良好。运行从发布生成的安装程序可执行文件后,安装成功完成(或者至少看起来是这样),但是当它尝试打开时,我收到Application cannot be started. Contact the application vendor.消息框。

这是日志文件的错误摘要部分:

ERROR SUMMARY
Below is a summary of the errors, details of these errors are listed later in the log.
* Activation of http://ServerPath/MyApplication_Install/Release/x86/MyApplication.application resulted in exception. Following failure messages were detected:
    + Value does not fall within the expected range.

和错误详细信息部分:

ERROR DETAILS
Following errors were detected during this operation.
* [9/12/2012 8:15:42 AM] System.ArgumentException
    - Value does not fall within the expected range.
    - Source: System.Deployment
    - Stack trace:
        at System.Deployment.Application.NativeMethods.CorLaunchApplication(UInt32 hostType, String applicationFullName, Int32 manifestPathsCount, String[] manifestPaths, Int32 activationDataCount, String[] activationData, PROCESS_INFORMATION processInformation)
        at System.Deployment.Application.ComponentStore.ActivateApplication(DefinitionAppId appId, String activationParameter, Boolean useActivationParameter)
        at System.Deployment.Application.SubscriptionStore.ActivateApplication(DefinitionAppId appId, String activationParameter, Boolean useActivationParameter)
        at System.Deployment.Application.ApplicationActivator.Activate(DefinitionAppId appId, AssemblyManifest appManifest, String activationParameter, Boolean useActivationParameter)
        at System.Deployment.Application.ApplicationActivator.PerformDeploymentActivation(Uri activationUri, Boolean isShortcut, String textualSubId, String deploymentProviderUrlFromExtension, BrowserSettings browserSettings, String& errorPageUrl)
        at System.Deployment.Application.ApplicationActivator.ActivateDeploymentWorker(Object state)

这里还有其他 ClickOnce 问题需要处理Microsoft.Vbe.Interop, Version=14.0.0.0- 确实出现在该OPERATION PROGRESS STATUS部分下的此日志文件中,但它并没有说程序集需要安装在全局程序集缓存中。

* [9/12/2012 8:45:19 AM] : Detecting dependent assembly Microsoft.Vbe.Interop, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71E9BCE111E9429C, processorArchitecture=msil using Microsoft.Vbe.Interop, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c, processorArchitecture=msil.
* [9/12/2012 8:45:19 AM] : Detecting dependent assembly Microsoft.Vbe.Interop, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71E9BCE111E9429C using Microsoft.Vbe.Interop, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c.

我需要从以前的安装中删除剩余的文件/文件夹吗?这是我的直觉,但我不知道在 AppData/Local/Temp 或 Windows/System32 文件夹中的何处查看。

编辑

我做了一些深入的挖掘,并在这里找到了我的应用程序的可执行文件:

C:\Users\MyUsername\AppData\Local\Apps\2.0\A30V87AA.25Q\PQ06CCDW.CYM\wpfb..tion_41f7e986af356c0c_0004.0004_b15da840f06645a3\MyApplication.exe

它加载没有任何错误。为了确认这是来自安装,而不是我的源代码,我在控制面板中进行了卸载,检查了该目录并且所有文件都消失了。

从 setup.exe 重新安装后,创建了一组不同的 jibberish 文件夹目录,但我仍然能够运行该应用程序。

那么为什么Application cannot be started. Contact the application vendor.安装后会弹出消息,即使AppData目录深处有一个工作副本?

编辑#2

正如 建议的那样jvanh1,我以管理员身份运行以查看是否有任何不同。不幸的是,它没有。

我被迫检查最新的标记版本并进行一些手动复制/粘贴——随后的发布确实有效。这里更重要的问题是我们以前从未在版本控制中使用过分支(至少对于这个应用程序没有),所以我说服我的经理让我试一试。

我将首先继续调查导致这个恼人的 ClickOnce 发布问题的原因——我的猜测是标记版本与我的工作副本中的不同引用集。

4

1 回答 1

0

我遇到了一个非常相似的问题,结果发现其中一个引用 dll 已移动,但提示路径未更新。VS 没有警告我,而是自动引用了 GAC 副本,导致先决条件更改。我通过用本地 dll 引用替换 GAC 引用解决了这个问题。

于 2013-01-21T22:06:32.740 回答