这是一台带有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)
此处还有其他针对Microsoft.Vbe.Interop, Version=14.0.0.0
的ClickOnce问题 - 这些问题确实出现在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发布问题的原因 - 我的猜测是标记版本与我的工作副本中不同的引用集。
答案 0 :(得分:0)
我遇到了一个非常类似的问题,事实证明其中一个引用dll被移动但是hintpath没有更新。 VS没有警告我,而是自动引用了GAC副本,导致了先决条件的更改。我通过用本地dll引用替换GAC引用来修复该问题。