原总结调试排错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文件进行安装,顺利完成。

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

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

    activate-power-mode的超炫编辑效果打动了我,花时间安装了atom,之后在package,install里面找到了这个插件,但是安装失败,如下图所示: gyp info it work ...

  2. 解决sublime text无法安装插件问题

    解决sublime text无法安装插件问题最近在sublime text3中使用命令ctrl+shift+p命令安装插件发现不能安装了,一会儿报错 这个错误表示没有可用的安装包,经过一番探索发现是配 ...

  3. Docker 安装 Jenkins , 并解决初始安装插件失败

    安装 Jenkins 后,初始化下载插件总是失败,导致安装不成功,重试好几次都是卡在安装插件那. 这里记录下 Docker 下怎么安装 Jenkins ,并解决初始安装插件失败问题. 安装插件失败,其 ...

  4. atom安装插件失败 latex

    用atom写latex 链接 http://www.cnblogs.com/schaepher/p/5934184.html 但在gui下安装插件失败 按照以下步骤解决了 安装gitbash cd . ...

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

    事件是这样的: 1.安装Package Control组件后, 2.调出Install Package选项安装插件,状态栏显示成功, 3.但打开Packages目录也看不到,Sublime插件管理也没 ...

  6. Android Studio 2.3 解决小米手机调试安装apk失败问题

    在开发者选项里面,拉到底,把miui优化选项去掉就好了. 参考资料 [问题反馈] Android Studio 2.3 在红米note3手机中 调试安装Apk失败

  7. sublime Text3安装及配置与解决安装插件失败

    1.下载sublime Text3的官网:https://www.sublimetext.com/32.安装Package Control   下载Package Contoral地址: 链接:htt ...

  8. 解决IDEA的plugins安装插件很慢、不成功问题

    1.修改hosts文件 路径:C:\Windows\System32\drivers\etc 52.84.224.36 plugins.jetbrains.com 重启IDEA,再次安装插件时,芜湖~ ...

  9. eclipse问题解决(link方式安装插件失败)

    使用 link 方式,离线安装 eclipse 插件时,经常失败. 一.常见的失败情况 link方式配好后,eclipse 启动,没有弹出任何信息. 查看当前工作空间——.metadata——.log ...

随机推荐

  1. 117-PHP在外部无法调用private类成员函数

    <?php class ren{ //定义人类 public function walk(){ //定义public成员方法 echo '我会走路.'; } private function d ...

  2. 复选框全选、反选及根据值JS控制复选框默认选中事件

    HTML代码 <div class="col-sm-7"> <input type="checkbox" id="allAndNot ...

  3. Python MySQL Limit

    章节 Python MySQL 入门 Python MySQL 创建数据库 Python MySQL 创建表 Python MySQL 插入表 Python MySQL Select Python M ...

  4. vue-router 二级路由(父子路由)

    使用二级路由 会显示父路由下面的子路由  且父子路由同时显示 因为父子同时显示  路由地址在同一级别/ 路由的显示模式有两种(都是为了减少数据库后台请求次数) #hash模式(#是特殊字符,很多场合不 ...

  5. P2057 [SHOI2007]善意的投票 / [JLOI2010]冠军调查

    P2057 [SHOI2007]善意的投票 / [JLOI2010]冠军调查 拿来练网络流的qwq 思路:如果i不同意,连边(i,t,1),否则连边(s,i,1).好朋友x,y间连边(x,y,1)(y ...

  6. Java生鲜电商平台-如何使用微服务来架构生鲜电商B2B2C平台?

    Java生鲜电商平台-如何使用微服务来架构生鲜电商B2B2C平台? 说明:随着互联网的日益普及,人们通过手机下单买菜的人越来越多,生鲜这个行业有两个显著的特点,一个是刚需.(你每天都要吃饭,都要吃菜) ...

  7. WindowsForm ComboBoxList 下拉框带复选框 可以动态添加

    先来张效果图: 1.这里需要对控件进行重写,详细内容如下,对此不感兴趣的可以直接跳过这步,下载本人生成的dll,直接看第二小结,下载链接https://pan.baidu.com/s/1gfzrK5t ...

  8. Spring中的注解——@nullable和@notnull

    @nullable和@nutNull 在写程序的时候你可以定义是否可为空指针.通过使用像@NotNull和@Nullable之类的annotation来声明一个方法是否是空指针安全的.现代的编译器.I ...

  9. (排序)P1177 【模板】快速排序

    题解: 这道题用传统快排(如下所示)的结果就是最后三个点TLE: 如果永远取第一个元素作为枢轴的话,在数组已经有序的情况下每次划分都将得到最坏的结果,时间复杂度退化为O(n^2).因为其中一个子序列每 ...

  10. 尝试用kotlin做一个app(一)

    1.先添加一下anko库 依赖:implementation "org.jetbrains.anko:anko:$anko_version" 版本:ext.anko_version ...