ClickOnce WPF 应用程序不在其他机器上 运行
ClickOnce WPF App not Running on other Machines
我已经使用 ClickOnce 发布了一个 C# WPF 应用程序。该应用程序在我用来创建该应用程序的机器上安装和 运行s 没有问题。它还可以在没有任何错误或日志消息的情况下安装在其他机器上。
当我通过双击桌面快捷方式或使用“开始”菜单快捷方式 运行 应用程序时,ClickOnce 将 运行(我可以在任务管理器中看到)并检查更新;但随后什么也没有发生。应用 window 未出现,应用未在任务管理器中显示为 运行ning,并且没有错误消息或日志。
我已经在另外两台电脑上试过了,每台电脑的结果都一样。我正在从部署的文件夹安装应用程序,通过我们的网络访问。我已确认其他计算机有 .NET 4.6.1(该应用程序的目标版本),并且我已将 4.6.1 离线安装程序放在先决条件文件夹中,以备不时之需。我试过多次重新发布、卸载和重新安装;我每次都得到相同的结果。
我通读了 Microsoft 的文档并查看了多个教程,没有找到任何遗漏的内容。我希望这里有人可以提供帮助或至少为我指出尝试解决此问题的最佳方法。
- 编辑 -
为了回应 Lews Therin 的以下评论,我在此处包括了事件查看器日志。在我尝试再次 运行 应用程序时,有 2 条错误消息和一个信息日志,所以它肯定出了问题。
我承认我对这些类型的日志不是很熟悉;非常感谢任何有关如何解析此信息的帮助或指导。
日志#1
Windows 报错:
- 系统
- 供应商
[姓名]Windows报错
- 事件 ID 1001
[预选赛] 0
4级
任务 0
关键字 0x80000000000000
- 创建时间
[系统时间] 2018-07-09T20:32:53.678375700Z
事件记录 ID 9118
渠道申请
电脑NEWRE
安全
事件数据
1806639054918107500
5个
CLR20r3
无法使用
0
订单管理应用程序 v1.3.exe
1.0.0.0
5b43975e
mscorlib
4.7.3110.0
5ae8c225
1189
6a
System.Windows.Markup.XamlParse
\?\C:\ProgramData\Microsoft\Windows\WER\Temp\WER62E8.tmp.mdmp \?\C:\ProgramData\Microsoft\Windows\WER\Temp\WER6971.tmp.WERInternalMetadata.xml \?\C:\ProgramData\Microsoft\Windows\WER\Temp\WER69EF.tmp.xml\?\C:\ProgramData\Microsoft\Windows\WER\Temp\WER69FD.tmp.csv\?\C:\ProgramData\Microsoft\Windows\WER\Temp\WER6A8A.tmp.txt
C:\ProgramData\Microsoft\Windows\WER\ReportArchive\AppCrash_OrderManagement_062907d9d894cee17b7efa78a8149ec994ec4ef_257ae95b_2bbc7075
0
ba366769-6b13-439b-84f3-ee1229edf3d2
2147487744
3c8cd2034a7915dc691278a601bdc16c
0
日志 #2
应用程序错误:
- 系统
- 供应商
[名称] 应用程序错误
- 事件 ID 1000
[预选赛] 0
2级
任务 100
关键字 0x80000000000000
- 创建时间
[系统时间] 2018-07-09T20:32:49.767127600Z
事件记录 ID 9117
渠道申请
电脑NEWRE
安全
事件数据
订单管理应用 v1.3.exe
1.0.0.0
5b43975e
KERNELBASE.dll
10.0.17134.112
c863c6f9
e0434352
0010db52
1820
01d417c3ff8df91d
C:\Users\office\AppData\Local\Apps.0VVVJR0.JPP\WH8JZO50.YZT\orde..tion_246267fe9a4e6831_0001.0000_6fabe4376c3b347d\Order 管理 App v1.3.exe
C:\WINDOWS\System32\KERNELBASE.dll
ba366769-6b13-439b-84f3-ee1229edf3d2
日志 #3
.NET 运行时间:
- 系统
- 供应商
[名称].NET 运行时间
- 事件 ID 1026
[预选赛] 0
2级
任务 0
关键字 0x80000000000000
- 创建时间
[系统时间] 2018-07-09T20:32:49.265695700Z
事件记录 ID 9116
渠道申请
电脑NEWRE
安全
事件数据
应用程序:订单管理应用程序 v1.3.exe 框架版本:v4.0.30319 描述:由于未处理的异常,进程终止。异常信息:System.Runtime.InteropServices.COMException at System.RuntimeTypeHandle.CreateInstance(System.RuntimeType, Boolean, Boolean, Boolean ByRef, System.RuntimeMethodHandleInternal ByRef, Boolean ByRef) at System.RuntimeType.CreateInstanceSlow(Boolean, Boolean , 布尔值, System.Threading.StackCrawlMark ByRef) 在 System.RuntimeType.CreateInstanceDefaultCtor(Boolean, Boolean, Boolean, System.Threading.StackCrawlMark ByRef) 在 System.Activator.CreateInstance(System.Type, Boolean) 在 System.Activator.CreateInstance(System.Type) 在 Order_Management_App_v1._3.MainWindow..ctor() 异常信息:System.Windows.Markup.XamlParse异常在 System.Windows.Markup.WpfXamlLoader.Load(System.Xaml.XamlReader, System.Xaml.IXamlObjectWriterFactory、布尔值、System.Object、System.Xaml.XamlObjectWriterSettings、System.Uri) 在 System.Windows.Markup.WpfXamlLoader.LoadBaml(System.Xaml.XamlReader、布尔值、System.Object、System.Xaml.Permissions.XamlAccessLevel, System.Uri) 在 System.Windows.Markup.XamlReader.LoadBaml(System.IO.Stream, System.Windows.Markup.ParserContext, System.Object, 布尔值) 在 System.Windows.Application.LoadBamlStreamWithSyncInfo(System.IO.Stream, System.Windows.Markup.ParserContext) 在 System.Windows.Application.LoadComponent(System.Uri, 布尔值) 在 System.Windows.Application.DoStartup() 在 System.Windows.Application.<.ctor>b__1_0(System.Object ) 在 System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate, System.Object, Int32) 在 System.Windows.Threading.ExceptionWrapper.TryCatchWhen(System.Object, System.Delegate, System.Object, Int32, System.Delegate) 在 System.Windows.Threading.DispatcherOperation.InvokeImpl() 在 System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(System.Object) 在 MS.Internal.CulturePreservingExecutionContext.CallbackWrapper(System.Object) 在 System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, 布尔值) 在 System.Threading.ExecutionContext.运行(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, 布尔值) 在System.Threading.ExecutionContext.运行(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object) 在 MS.Internal.CulturePreservingExecutionContext.Run(MS.Internal.CulturePreservingExecutionContext, System.Threading.ContextCallback, System.Object) 在 System.Windows.Threading.DispatcherOperation.Invoke() 在 System.Windows.Threading.Dispatcher.ProcessQueue() 在 System.Windows.Threading.Dispatcher.WndProcHook(在tPtr, Int32, IntPtr, IntPtr, Boolean ByRef) 在 MS.Win32.HwndWrapper.WndProc(IntPtr, Int32, IntPtr, IntPtr, Boolean ByRef) 在 MS.Win32.HwndSubclass.DispatcherCallbackOperation(System.Object) 在 System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate, System.Object, Int32) 在 System.Windows.Threading.ExceptionWrapper.TryCatchWhen(System.Object, System.Delegate, System.Object, Int32, System.Delegate)在 System.Windows.Threading.Dispatcher.LegacyInvokeImpl(System.Windows.Threading.DispatcherPriority, System.TimeSpan, System.Delegate, System.Object, Int32) 在 MS.Win32.HwndSubclass.SubclassWndProc(IntPtr, Int32, IntPtr, IntPtr)在 MS.Win32.UnsafeNativeMethods.DispatchMessage(System.Windows.Interop.MSG ByRef) 在 System.Windows.Threading.Dispatcher.PushFrameImpl(System.Windows.Threading.DispatcherFrame) 在 System.Windows.Threading.Dispatcher.PushFrame(System.Windows.Threading.DispatcherFrame) 在 System.Windows.Application.运行Dispatcher(System.Object) 在 System.Windows.Application.运行Internal(System.Windows.Window) 在 System.Windows.Application.运行(System.Windows.Window ) 在 Order_Management_App_v1._1.App.Main()
我在公司也遇到过这个问题。在我的公司,在我在用户计算机上安装任何应用程序之前,他们(IT 支持)必须批准该应用程序安装在他们的计算机上,然后才允许 run/open 该应用程序。您也可以与您的 IT 支持人员核实是否有安装新应用程序的政策。
经过一些研究和评论中人们的大量帮助,我弄清楚了问题所在。最初的问题是因为Interop.QBFC13(QuickBooks SDK 库的引用)不能通过Visual Studio复制到本地。因此,除非您手动将其添加到项目的引用中(请参阅 this question), the machine that your app will be run on will need to have the same version of the SDK installed on it. The download for QBFC13 (currently the most recent version) can be found here 中的第一个答案。
后来出现的问题是因为我需要撤消之前尝试过但搞砸了的修复(删除 StartupUri)。
我已经使用 ClickOnce 发布了一个 C# WPF 应用程序。该应用程序在我用来创建该应用程序的机器上安装和 运行s 没有问题。它还可以在没有任何错误或日志消息的情况下安装在其他机器上。
当我通过双击桌面快捷方式或使用“开始”菜单快捷方式 运行 应用程序时,ClickOnce 将 运行(我可以在任务管理器中看到)并检查更新;但随后什么也没有发生。应用 window 未出现,应用未在任务管理器中显示为 运行ning,并且没有错误消息或日志。
我已经在另外两台电脑上试过了,每台电脑的结果都一样。我正在从部署的文件夹安装应用程序,通过我们的网络访问。我已确认其他计算机有 .NET 4.6.1(该应用程序的目标版本),并且我已将 4.6.1 离线安装程序放在先决条件文件夹中,以备不时之需。我试过多次重新发布、卸载和重新安装;我每次都得到相同的结果。
我通读了 Microsoft 的文档并查看了多个教程,没有找到任何遗漏的内容。我希望这里有人可以提供帮助或至少为我指出尝试解决此问题的最佳方法。
- 编辑 -
为了回应 Lews Therin 的以下评论,我在此处包括了事件查看器日志。在我尝试再次 运行 应用程序时,有 2 条错误消息和一个信息日志,所以它肯定出了问题。
我承认我对这些类型的日志不是很熟悉;非常感谢任何有关如何解析此信息的帮助或指导。
日志#1 Windows 报错: - 系统 - 供应商 [姓名]Windows报错 - 事件 ID 1001 [预选赛] 0 4级 任务 0 关键字 0x80000000000000 - 创建时间 [系统时间] 2018-07-09T20:32:53.678375700Z 事件记录 ID 9118 渠道申请 电脑NEWRE 安全
事件数据
1806639054918107500 5个 CLR20r3 无法使用 0 订单管理应用程序 v1.3.exe 1.0.0.0 5b43975e mscorlib 4.7.3110.0 5ae8c225 1189 6a System.Windows.Markup.XamlParse
\?\C:\ProgramData\Microsoft\Windows\WER\Temp\WER62E8.tmp.mdmp \?\C:\ProgramData\Microsoft\Windows\WER\Temp\WER6971.tmp.WERInternalMetadata.xml \?\C:\ProgramData\Microsoft\Windows\WER\Temp\WER69EF.tmp.xml\?\C:\ProgramData\Microsoft\Windows\WER\Temp\WER69FD.tmp.csv\?\C:\ProgramData\Microsoft\Windows\WER\Temp\WER6A8A.tmp.txt C:\ProgramData\Microsoft\Windows\WER\ReportArchive\AppCrash_OrderManagement_062907d9d894cee17b7efa78a8149ec994ec4ef_257ae95b_2bbc7075
0 ba366769-6b13-439b-84f3-ee1229edf3d2 2147487744 3c8cd2034a7915dc691278a601bdc16c 0
日志 #2 应用程序错误: - 系统 - 供应商 [名称] 应用程序错误 - 事件 ID 1000 [预选赛] 0 2级 任务 100 关键字 0x80000000000000 - 创建时间 [系统时间] 2018-07-09T20:32:49.767127600Z 事件记录 ID 9117 渠道申请 电脑NEWRE 安全
事件数据
订单管理应用 v1.3.exe 1.0.0.0 5b43975e KERNELBASE.dll 10.0.17134.112 c863c6f9 e0434352 0010db52 1820 01d417c3ff8df91d C:\Users\office\AppData\Local\Apps.0VVVJR0.JPP\WH8JZO50.YZT\orde..tion_246267fe9a4e6831_0001.0000_6fabe4376c3b347d\Order 管理 App v1.3.exe C:\WINDOWS\System32\KERNELBASE.dll ba366769-6b13-439b-84f3-ee1229edf3d2
日志 #3 .NET 运行时间: - 系统 - 供应商 [名称].NET 运行时间 - 事件 ID 1026 [预选赛] 0 2级 任务 0 关键字 0x80000000000000 - 创建时间 [系统时间] 2018-07-09T20:32:49.265695700Z 事件记录 ID 9116 渠道申请 电脑NEWRE 安全
事件数据
应用程序:订单管理应用程序 v1.3.exe 框架版本:v4.0.30319 描述:由于未处理的异常,进程终止。异常信息:System.Runtime.InteropServices.COMException at System.RuntimeTypeHandle.CreateInstance(System.RuntimeType, Boolean, Boolean, Boolean ByRef, System.RuntimeMethodHandleInternal ByRef, Boolean ByRef) at System.RuntimeType.CreateInstanceSlow(Boolean, Boolean , 布尔值, System.Threading.StackCrawlMark ByRef) 在 System.RuntimeType.CreateInstanceDefaultCtor(Boolean, Boolean, Boolean, System.Threading.StackCrawlMark ByRef) 在 System.Activator.CreateInstance(System.Type, Boolean) 在 System.Activator.CreateInstance(System.Type) 在 Order_Management_App_v1._3.MainWindow..ctor() 异常信息:System.Windows.Markup.XamlParse异常在 System.Windows.Markup.WpfXamlLoader.Load(System.Xaml.XamlReader, System.Xaml.IXamlObjectWriterFactory、布尔值、System.Object、System.Xaml.XamlObjectWriterSettings、System.Uri) 在 System.Windows.Markup.WpfXamlLoader.LoadBaml(System.Xaml.XamlReader、布尔值、System.Object、System.Xaml.Permissions.XamlAccessLevel, System.Uri) 在 System.Windows.Markup.XamlReader.LoadBaml(System.IO.Stream, System.Windows.Markup.ParserContext, System.Object, 布尔值) 在 System.Windows.Application.LoadBamlStreamWithSyncInfo(System.IO.Stream, System.Windows.Markup.ParserContext) 在 System.Windows.Application.LoadComponent(System.Uri, 布尔值) 在 System.Windows.Application.DoStartup() 在 System.Windows.Application.<.ctor>b__1_0(System.Object ) 在 System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate, System.Object, Int32) 在 System.Windows.Threading.ExceptionWrapper.TryCatchWhen(System.Object, System.Delegate, System.Object, Int32, System.Delegate) 在 System.Windows.Threading.DispatcherOperation.InvokeImpl() 在 System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(System.Object) 在 MS.Internal.CulturePreservingExecutionContext.CallbackWrapper(System.Object) 在 System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, 布尔值) 在 System.Threading.ExecutionContext.运行(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, 布尔值) 在System.Threading.ExecutionContext.运行(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object) 在 MS.Internal.CulturePreservingExecutionContext.Run(MS.Internal.CulturePreservingExecutionContext, System.Threading.ContextCallback, System.Object) 在 System.Windows.Threading.DispatcherOperation.Invoke() 在 System.Windows.Threading.Dispatcher.ProcessQueue() 在 System.Windows.Threading.Dispatcher.WndProcHook(在tPtr, Int32, IntPtr, IntPtr, Boolean ByRef) 在 MS.Win32.HwndWrapper.WndProc(IntPtr, Int32, IntPtr, IntPtr, Boolean ByRef) 在 MS.Win32.HwndSubclass.DispatcherCallbackOperation(System.Object) 在 System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate, System.Object, Int32) 在 System.Windows.Threading.ExceptionWrapper.TryCatchWhen(System.Object, System.Delegate, System.Object, Int32, System.Delegate)在 System.Windows.Threading.Dispatcher.LegacyInvokeImpl(System.Windows.Threading.DispatcherPriority, System.TimeSpan, System.Delegate, System.Object, Int32) 在 MS.Win32.HwndSubclass.SubclassWndProc(IntPtr, Int32, IntPtr, IntPtr)在 MS.Win32.UnsafeNativeMethods.DispatchMessage(System.Windows.Interop.MSG ByRef) 在 System.Windows.Threading.Dispatcher.PushFrameImpl(System.Windows.Threading.DispatcherFrame) 在 System.Windows.Threading.Dispatcher.PushFrame(System.Windows.Threading.DispatcherFrame) 在 System.Windows.Application.运行Dispatcher(System.Object) 在 System.Windows.Application.运行Internal(System.Windows.Window) 在 System.Windows.Application.运行(System.Windows.Window ) 在 Order_Management_App_v1._1.App.Main()
我在公司也遇到过这个问题。在我的公司,在我在用户计算机上安装任何应用程序之前,他们(IT 支持)必须批准该应用程序安装在他们的计算机上,然后才允许 run/open 该应用程序。您也可以与您的 IT 支持人员核实是否有安装新应用程序的政策。
经过一些研究和评论中人们的大量帮助,我弄清楚了问题所在。最初的问题是因为Interop.QBFC13(QuickBooks SDK 库的引用)不能通过Visual Studio复制到本地。因此,除非您手动将其添加到项目的引用中(请参阅 this question), the machine that your app will be run on will need to have the same version of the SDK installed on it. The download for QBFC13 (currently the most recent version) can be found here 中的第一个答案。
后来出现的问题是因为我需要撤消之前尝试过但搞砸了的修复(删除 StartupUri)。