c# - 在客户端系统中安装后桌面应用程序无法打开
问题描述
我目前正在使用带有 4.6.1 .net 框架的 Visual Studio 2017。我为我的桌面应用程序创建了安装文件,安装程序在我的系统中完美安装和运行。问题是安装程序在其他计算机上成功安装,但应用程序没有打开。
编辑
在客户端系统中下载了 .net 框架,但仍然出现同样的问题。
编辑 2
我使用 Dependency walker 进行了依赖扫描。它说有一堆文件系统找不到 - 打开文件时出错。系统找不到指定的文件。
API-MS-WIN-APPMODEL-RUNTIME-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-ERROR-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-ROBUFFER-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-STRING-L1-1-0.DLL
API-MS-WIN-SHCORE-SCALING-L1-1-1.DLL
DCOMP.DLL
IESHIMS.DLL
此外,发现 x86 类型的模块出现错误 - 包括 setup.exe - 但我不知道这是怎么发生的。无论我在哪里看到列出的选项,我都选择了 64。请找到截图。如果这确实是问题,我该如何解决?
解决方案
应用程序启动问题:这是一个简短的版本: WPF 应用程序在我启动时崩溃。聊天版。Martin Prikryl 的一个不错:使用 Inno Setup 安装时应用程序无法正常工作
日志:始终检查所有事件日志、应用程序日志和MSI 日志- 如果可用。顺便提一下。也许尝试附加调试器进行测试,如此处所述- 只要应用程序完全启动。然后单步执行代码。
通常的罪魁祸首:您可能只是lack a runtime
(示例),有bitness problem
(32/64 位)或,insufficient permissions / privileges
或configuration errors
(ini
,,,,)。xml
registry
etc...
总而言之- 鱼雷,下面全面展开 - 没有什么太愚蠢更不用说:-):
缺少运行时:首先,始终检查缺少的运行时。例如:
.Net
,.Net Core
,Java
,Silverlight
,Direct X
(现在甚至用于应用程序),VC++ Runtime
,MS-XML
(旧版),etc...
. 请记住,它们有不同的版本,有些不能在盒子上共存,而另一些可以并排运行。
错误代码:查找错误代码和异常消息。
调试工具:有关调试工具的一些信息。
- 调试依赖问题的工具-
ProcMon.exe
,VS
,Dependency Walker
,etc...
- COM 依赖错误
- 基本服务调试工具:
Event Viewer
,Task Manager
,Services.msc
Process Explorer
,NET command
,SC.exe
- Windows 服务常见问题 (FAQ)
ProcMon.exe : 交易工具。一刀切的工具。蜜蜂的膝盖,最上面的,跃迁,猫的睡衣(是的,这是一个 Top Gear Hamster 的典故)。有效使用它可能是一个挑战,但它是最好的免费通用调试工具。
其他想法:
- 配置设置?
- 开发盒之罪:硬编码参考?测试服务器/UAT 链接?
- 清单、INI 文件和XML文件?
- 注册表设置?港大/港中大
- 连接字符串。请参阅下面的身份验证和授权部分。
- 平台和比特?(ARM、英特尔 32 / 64 等...)。
- 从错误的注册表配置单元中读取非常常见(经典的浪费时间):
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\MyApp\MySettings
(32 位)HKEY_LOCAL_MACHINE\SOFTWARE\MyApp\MySettings
(64 位)
- 从错误的注册表配置单元中读取非常常见(经典的浪费时间):
- 先决条件和依赖项?
- 关于依赖扫描和调试的话题。
- Dependency Walker:依赖类型。
- Fuslogvw.exe会告诉你什么吗?(.NET 应用程序的 .NET 程序集绑定失败)。运行时如何定位程序集
- 快速检查:Visual Studio 模块视图
- 缺少/损坏的注册(间接依赖)
- 缺少 COM、COM 互操作 (regasm.exe)、无注册 COM(基于清单)
- Broken Side-By-Side Win32 Assembly Manifest(晦涩难懂,可能是由于马虎的企业应用程序重新打包造成的,可能会攻击看似随机的 PC)
- 广汽安装?
- 存在两个 GAC。
- GAC / WinSxS 提交问题:GAC / WinSXS 文件在 StartServices 之后的提交阶段之前不会安装到 GAC 中。
- 权限和特权?-local -ACL 权限和NT 权限?
- 身份验证/授权- 网络相关
- 本地用户、域用户、Active Directory:组成员身份、组策略等...
- 启动用户:用户配置文件问题?也许尝试在失败的地方登录另一个用户?
- 身份验证模式:Windows 身份验证。SQL Server 身份验证等...
- 一般网络和代理问题?(代理、WINS、DNS 以及网络中涉及的所有复杂性。UNC 路径可达?)
- 许可?(可能与硬件加密狗和驱动程序有关)
- 安全软件干扰?(软件/硬件防火墙、防病毒、加密工具和套件等...)
- 操作系统版本或版本?(Windows 7 问题)
- 本土化?非英语系统?
- 司机?
- 硬件?
- 编码?
- 系统损坏?(时间错误、磁盘错误、文件名和路径名太长、磁盘已满、“出错”)
- 目标机器性质?虚拟机?国企?目标机器是真机器吗?试机?
- 锁定/阻止/使用中的文件和注册表项?
- 恶意软件?在问题方面几乎可以引起任何事情。
链接:
推荐阅读
- python-3.x - 使用二维嵌套字典中的 if/else 语句进行列表理解循环
- node.js - nodejs到mosquitto raspberry pi pub sub不起作用
- java - PostgreSQL - 找不到适用于 JDBC 的驱动程序
- javascript - AJAX - JSON 未定义(jQuery、NodeJS)
- angular - 使用插值设置 routerLink
- symfony - Symfony 不验证实体
- python - pandas 0.23.1 AttributeError:“模块”对象没有属性“滚动”
- ruby - Ruby Sinatra 上传表单参数受到干扰
- font-awesome - Viber 图标在 Font Awsome 4 中不可用
- php - 给定邮箱中的地址 [Doctrine\ORM\Query_state] 不符合 RFC 2822, 3.6.2