[原]解決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 許可協議。轉載請註明出處!
  • 做者寄語: 文章的結束只是思考的開始,您寶貴的意見和建議將是我繼續前行的動力!
相關文章
相關標籤/搜索