[原]排错实战——解决Tekla通过.tsep安装插件失败的问题

原总结调试排错troubleshootteklaprocess monitorsysinternals

缘起

最近同事使用.tsep安装Tekla插件的时候,Tekla提示该插件已经存在了,需要卸载后再安装。同事找了半天,没找到怎么卸载,我也没找到。于是决定弄清楚Tekla是 如何判断一个插件安装与否的。 想必看过我其它排错文章的小伙伴已经猜到了,我们今天文章中的主角依然是process monitor。好了,话不多说,好戏马上开始。

调查

在开始调查之前,我们可以先思考下,Tekla是如何判断一个插件安装与否的?

我能想到如下三种可能:

  • 通过读取注册表来判断。
  • 通过配置文件来判断。
  • 通过加载特定目录下符合条件(e.g. 导出某些约定好的接口)的文件来判断。

这三种情况,我们都可以通过process monitor监控到。

捕获Tekla操作记录

打开process monitor,开始监视。然后双击.tsep进行安装,当弹出错误对话框的时候,关闭process monitor监视。

过滤我们关心的记录

process monitor会捕获超级多的事件。如果不能进行有效的过滤,想找到我们关心的事件,无异于大海捞针。但是我们要根据什么条件来过滤呢?

首先,我们需要根据进程名进行过滤,但是我们怎么知道安装程序对应的进程名呢? process monitorInclude Process From Window功能可以很方便的帮我们根据窗口找到其对应的进程。按住该按钮(大写字母A右侧,像靶子的那个按钮),拖动到目标窗体,松开即可。如下图:

除了根据进程名过滤,我们还需要根据其它条件进一步过滤。我们的过滤条件大概是这样的:

  • Process Name只关心TsepFileDispatcher.exe
  • Event Class只关心RegistryFile System,不关心NetworkProcess and Thread
  • Operation排除Write相关事件,只关心Read相关事件即可。
  • Path排除以.dll.exe结尾的路径,并且排除windows.net相关的路径。
  • Result只关心SUCCESS类型的。

下图是我们刚刚设置的过滤规则(为了突出重点,我删掉了process monitor自带的过滤规则)。

经过以上过滤,剩下的事件就很少了,我们可以分别查看RegistryFile System的事件。我们先看File System事件。

interested-readfile-event

当我看到

C:\ProgramData\Tekla Structures Learning\2018\Extensions\Installed\{叠合板模板}{1.0}{73703402-ee5b-4058-bf6a-ad1077481245}\Manifest.xml

这条记录的时候,我猜测Tekla会把插件装在子目录Extensions\Installed下,我要安装的插件标识符是叠合板模板,版本是{1.0},对应的GUID{73703402-ee5b-4058-bf6a-ad1077481245}

{% note info %}

说明: 为什么不看Registry事件呢?因为我找了一圈,没有很容易的在里面找到我关心的事件。

{% endnote %}

大功告成

至此,我们已经找到了我们关心的事件。使用Everything在本地搜索叠合板模板,删除所有搜到的记录。再次双击.tsep文件进行安装,顺利完成。??

总结

  • 清晰的思路+合适的工具 能帮我们快速解决看似复杂的问题。
  • process monitor真是windows下的排错神器!你值得拥有!

参考资料

原文地址:https://www.cnblogs.com/bianchengnan/p/12242439.html

时间: 2024-12-15 15:25:24

[原]排错实战——解决Tekla通过.tsep安装插件失败的问题的相关文章

解决mac下atom安装插件失败问题

activate-power-mode的超炫编辑效果打动了我,花时间安装了atom,之后在package,install里面找到了这个插件,但是安装失败,如下图所示: gyp info it worked if it ends with ok gyp info using [email protected] gyp info using [email protected] | darwin | x64 gyp http GET https://atom.io/download/atom-shel

atom安装插件失败 latex

用atom写latex 链接 http://www.cnblogs.com/schaepher/p/5934184.html 但在gui下安装插件失败 按照以下步骤解决了 安装gitbash cd .atom/packages git clone URL(相应插件的git链接) 4.cd 相应插件的文件 5.npm install 注:4-5是在cmd下运行的,[需事先安装npm,去nodejs官网装个nodejs即可,装完需运行D:\Nodejs\nodevars.bat配置环境变量] 6.O

magento 安装插件失败 网站打不开

magento 安装插件失败 网站打不开,只有connect能打开,显示错误 Service Temporarily Unavailable The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later. 这个的解决方法很简单,只需要删除magento网站根目录下的maintenance.flag文件

Magento安装插件失败出现503错误的解决方法

今天用Magento安装一个插件失败了,再刷新前台,后台都打不开,网站标题显示503错误,只有magento connect页面能打开,错误提示如下: Service Temporarily UnavailableThe server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later. 解决方法非常简单了,只需

Sublime Text提示Unable to download XXX. Please view the console for more details安装插件失败解决

安装插件时,弹出提示框: Package Control Unable to download XXX. Please view the console for more details. 一番搜索后在github上找到答案: 解决方法:在这里插入图片描述1.打开Sublime Text,Preferences ->Package Settings->Package Control->Settings-User,在文件中添加以下几行代码: "downloader_precede

Sublime Text 2 windows8安装插件失败解决

事件是这样的: 1.安装Package Control组件后, 2.调出Install Package选项安装插件,状态栏显示成功, 3.但打开Packages目录也看不到,Sublime插件管理也没看到安装插件,再调出List Packages也只显示一个Package Control. 很纠结啊,第2,第3步重复了N次还是不行... 最后网上搜索了下,说是可能用户名包含中文,因为win8是用邮箱登陆的,怪我当时给自己名字填入了中文名字,真无语啊. 那就试下吧,方法如下: 找到目录 “Pack

sublime安装插件失败情形之一解决方案之mac

今天用sublime2写代码的时候需要安装一个插件于是如常打command+shift+p输入install package,打算安装结果提示package control:There are no packages available for installation. 于是各种百度据说是因为IPV6的原因也有说是因为公司搬家的原因反正最后终于解决了那就可以了.解决步骤如下 一.获取sublime.wbond.net的IP地址可以在命令行下ping也可以到在线ping工具寻找它的IP地址我打开

[原]排错实战——解救加载调试符号失败的IDA

原调试IDA排错troubleshootsymbolspdbsysinternalprocess monitor 缘起 最近想借助IDA逆向一个函数.在windows下,调试器(比如vs, windbg)可以通过调试符号(PDB)把地址与符号名对应起来,为我们提供更可读的信息.IDA应该也支持加载PDB,通过查看IDA安装目录下的idahelp.chm(打开后搜索PDB即可找到相关说明)发现还真支持.但是当我加载符号的时候,却失败了.本文记录了整个调查过程. 效果对比 先放两张对比图,大家直观感

[原]排错实战——通过对比分析sysinternals事件修复程序功能异常

原调试debug排错troubleshootprocess monitorsysinternals 缘起 最近,我们程序的某个功能在一台机器上不正常,但是在另外一台机器上却是正常的.代码是同一份,vs版本也一样(打的补丁也一样).编译出来的程序在两台电脑上运行的结果就是不一样.惊不惊喜,意不意外?如果是你遇到了这种情况,你会怎么调查呢?:upside_down_face: {% note info %} 说明: 为了跟大家分享这个问题,我事后在自己的机器上重新把整个过程梳理了一遍,并保存了pro