[原]解决Tekla经过.tsep安装插件失败的问题

缘起

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

调查

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

我能想到以下三种可能:微信

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

这三种状况,咱们均可以经过process monitor监控到。工具

捕获Tekla操做记录

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

过滤咱们关心的记录

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

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

Include-Process-From-Window

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

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

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

tekla-install-plugin-failed-event-filter

通过以上过滤,剩下的事件就不多了,咱们能够分别查看RegistryFile System的事件。咱们先看File System事件。cdn

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}

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

大功告成

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

总结

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

参考资料

BianChengNan wechat
扫描左侧二维码进入公众号,扫描右侧二维码加我我的微信:)
  • 本文做者: BianChengNan
  • 本文连接: bianchengnan.gitee.io/articles/tr…
  • 版权声明: 本博客全部文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!
  • 做者寄语: 文章的结束只是思考的开始,您宝贵的意见和建议将是我继续前行的动力!
相关文章
相关标签/搜索