天天看點

NSIS:判斷程式是否運作并進行解除安裝

今天在評論裡看到網友說要一個這樣的功能,就簡單寫了一個,本來想做360殺手來着,但遺憾的是我從來不用360的東西,所在電腦上也沒有360相關的軟體進行測試,是以就寫了一個“金山殺手”,代碼是通用的,稍稍進行一下修改就成“360殺手”啦,哈哈~~

代碼未作詳細測試,但應該沒有太大的問題,這裡隻是提一個思路,如有問題,大家有興趣的自行修改吧。

NSIS:判斷程式是否運作并進行解除安裝

代碼附上:

<code>01</code>

<code>SetCompressor /SOLID lzma</code>

<code>02</code>

<code>SetCompress force</code>

<code>03</code>

<code>XPStyle on</code>

<code>04</code>

<code>05</code>

<code>OutFile </code><code>"unkis.exe"</code>

<code>06</code>

<code>Name </code><code>"金山殺手"</code>

<code>07</code>

<code>BrandingText </code><code>"WwW.Flighty.CN"</code>

<code>08</code>

<code>09</code>

<code>;以下為檢測運作檔案方式,有一定局限性,不推薦。</code>

<code>10</code>

<code>Section </code><code>"解除安裝金山衛士"</code>

<code>11</code>

<code>  </code><code>FindProcDLL::FindProc </code><code>"kxetray.exe"</code>

<code>12</code>

<code>    </code><code>Pop $R0</code>

<code>13</code>

<code>    </code><code>IntCmp $R0 1 0 no_run</code>

<code>14</code>

<code>    </code><code>MessageBox MB_ICONQuESTION|MB_YESNO </code><code>"安裝程式檢測到 金山衛士 正在運作,您必須将其解除安裝才能進行下一步安裝,是否現在進行解除安裝?"</code> <code>IDYES keep IDNO none</code>

<code>15</code>

<code>  </code><code>keep:</code>

<code>16</code>

<code>    </code><code>ExecWait </code><code>'C:\Program Files\Kingsoft\KSafe\uninst.exe'</code>

<code>17</code>

<code>  </code><code>none:</code>

<code>18</code>

<code>    </code><code>Quit</code>

<code>19</code>

<code>    </code><code>no_run:</code>

<code>20</code>

<code>SectionEnd</code>

<code>21</code>

<code>22</code>

<code>;以下為系統資料庫檢測方式,兩種方式可以選其一,不過,推薦使用系統資料庫檢測方式。</code>

<code>23</code>

<code>Section </code><code>"解除安裝金山衛士2"</code>

<code>24</code>

<code>ReadRegStr $R2 HKLM </code><code>"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\金山衛士"</code> <code>"UninstallString"</code>

<code>25</code>

<code>  </code><code>StrCmp $R2 </code><code>""</code> <code>NO YES</code>

<code>26</code>

<code>    </code><code>YES:</code>

<code>27</code>

<code>28</code>

<code>29</code>

<code>    </code><code>ExecWait $R2</code>

<code>30</code>

<code>31</code>

<code>32</code>

<code>    </code><code>NO:</code>

<code>33</code>

繼續閱讀