我们在使用 clickonce 部署的应用程序时遇到了问题。如果我们创建的文件ApplicationDeployment.DataDirectory
超过了已知的 Windows 260 字符限制,那么在部署应用程序更新时,应用程序将崩溃。我们在 windows 事件日志中得到这个:
Application: fubar.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.Runtime.InteropServices.COMException
at System.Deployment.Internal.Isolation.IActContext.SetApplicationRunningState(UInt32, UInt32, UInt32 ByRef)
at System.ActivationContext.SetApplicationState(ApplicationState)
at System.AppDomain.SetupDomainForApplication(System.ActivationContext, System.String[])
at System.AppDomain.SetupApplicationHelper(System.Security.Policy.Evidence, System.Security.Policy.Evidence, System.ApplicationIdentity, System.ActivationContext, System.String[])
at System.AppDomain.InitializeDomainSecurity(System.Security.Policy.Evidence, System.Security.Policy.Evidence, Boolean, IntPtr, Boolean)
仅当数据目录中有超过 260 个字符限制的文件时才会发生。没有这些文件,升级工作正常。一般来说,我们的应用程序在长路径名下工作正常,这只是单击一次的问题。
我有点困惑从这里去哪里。Windows、.Net 或 clickonce 中是否有任何配置或设置可以帮助解决这个问题?我们已经尝试了通常的选项,但似乎没有一个能有所作为:
https://blogs.msdn.microsoft.com/jeremykuhne/2016/07/30/net-4-6-2-and-long-paths-on-windows-10/ https://docs.microsoft.com/ en-us/windows/win32/fileio/naming-a-file#enable-long-paths-in-windows-10-version-1607-and-later
在这一点上,这似乎只是 clickonce 的一个错误。我目前最好的选择似乎是将我们的文件系统访问权限迁移到使用独立存储,但这似乎是一项巨大的时间投资。我希望有人会知道一些简单的事情来尝试。