我有一个通过 clickonce 部署的简单 Winforms 应用程序。
在我的开发机器上它可以工作。
在其他机器上安装正常,但从开始菜单启动时崩溃。
从 C:\Users\xxxxx\AppData\Local\Apps\2.0 开始是没问题的...
当 clickonce 在 ...[Application Directory]\Data 中查找 .mdb 时发生崩溃错误。但是,.mdb 文件部署在应用程序目录中。
有什么建议么?
您是否尝试过使用 procmon 查看您的应用程序试图访问的内容?它可能会显示您可能遗漏的应用程序的进一步依赖关系。
此外,如果有问题的 dll 是 COM,您是否为应用程序和程序集创建了必要的清单。
高温高压
谢谢
围绕调用 3rd 方 dll 进行异常处理并发布您遇到的确切错误。如果它在您单击 ClickOnce 文件夹中的 exe 时有效,但在您作为 ClickOnce 应用程序运行时无效,则可能的问题是您正在运行的东西需要比 ClickOnce 应用程序更多的权限,即需要管理访问权限的东西。
是什么导致了问题:
.mdb 文件包含在“构建操作 = 内容”和“复制到输出目录 = 始终复制”的项目中。
在应用程序设置中,.mdb 文件的发布状态设置为“包含”。
这使用应用程序文件部署了 .mdb 文件。但是,clickonce 应用程序希望 .mdb 文件部署在 clickonce \Data 文件夹中。
解决方案:
在“应用程序文件”中,.mdb 的“发布状态”设置为数据文件。这会将文件分解到 clickonce \Data 文件夹。
通过路径与 .mdb 文件的所有交互都已更新,以便在部署应用程序时使用 clickonce 数据路径。
if (ApplicationDeployment.IsNetworkDeployed)
{
this.applicationDataPath = Path.Combine(Path.GetDirectoryName(Application.UserAppDataPath), "Data");
}