NSIS根據安裝檔案log 解除安裝檔案(防止誤刪)

2021-07-26 18:31:49 字數 2693 閱讀 4503

1、在普通安裝指令碼前新增庫

!include "logiclib.nsh"
2、; 啟用安裝日誌記錄,該日誌檔案將會作為解除安裝檔案的依據(注意,本區段必須放置在所有區段之前)

section "-logseton"

logset on

sectionend

3、

/****************************** * 以下是安裝程式的解除安裝部分 * ******************************/

; 根據安裝日誌解除安裝檔案的呼叫巨集

!macro delfilebylog logfile

iffileexists `$` 0 +4

push `$`

call un.delfilebylog

delete `$`

!macroend

section uninstall

delete "$instdir\$.url"

; 呼叫巨集只根據安裝日誌解除安裝安裝程式自己安裝過的檔案

!insertmacro delfilebylog "$instdir\install.log"

; 清除安裝程式建立的且在解除安裝時可能為空的子目錄,對於遞迴新增的檔案目錄,請由最內層的子目錄開始清除(注意,不要帶 /r 引數,否則會失去 delfilebylog 的意義)

rmdir "$smprograms\$icons_group"

sectionend

; 以下是解除安裝程式通過安裝日誌解除安裝檔案的專用函式,請不要隨意修改

function un.delfilebylog

exch $r0

push $r1

push $r2

push $r3

fileopen $r0 $r0 r

$fileread $r0 $r1

$ $r1 == `` $ $ $

strcpy $r1 $r1 -2

strcpy $r2 $r1 11

strcpy $r3 $r1 20

$ $r2 == "file: wrote"

$ $r2 == "file: skipp"

$ $r3 == "createshortcut: out:"

$ $r3 == "created uninstaller:"

push $r1

push `"`

call un.delfilebylog.strloc

pop $r2

$ $r2 != ""

intop $r2 $r2 + 1

strcpy $r3 $r1 "" $r2

push $r3

push `"`

call un.delfilebylog.strloc

pop $r2

$ $r2 != ""

strcpy $r3 $r3 $r2

delete /rebootok $r3$$

$strcpy $r2 $r1 7

$ $r2 == "rename:"

push $r1

push "->"

call un.delfilebylog.strloc

pop $r2

$ $r2 != ""

intop $r2 $r2 + 2

strcpy $r3 $r1 "" $r2

delete /rebootok $r3$$

$fileclose $r0

pop $r3

pop $r2

pop $r1

pop $r0

functionend

function un.delfilebylog.strloc

exch $r0

exch

exch $r1

push $r2

push $r3

push $r4

push $r5

strlen $r2 $r0

strlen $r3 $r1

strcpy $r4 0

$strcpy $r5 $r1 $r2 $r4

$ $r5 == $r0

$ $r4 = $r3$$

intop $r4 $r4 + 1

$$ $r4 = $r3

strcpy $r0 ""

$strcpy $r0 $r4

$pop $r5

pop $r4

pop $r3

pop $r2

pop $r1

exch $r0

functionend

這期間或許會遇到該問題。
section: "-logseton"

錯誤: 已指定 logset , 但未定義 nsis_config_log .

是這樣的提示,請問怎麼解決呢?

**是用hm vnisedit 指令碼編輯器嚮導產生

**裡都有:

!include "logiclib.nsh"

; 啟用安裝日誌記錄,該日誌檔案將會作為解除安裝檔案的依據(注意,本區段必須放置在所有區段之前)

section "-logseton"

logset on

sectionend

最佳答案

NSIS製作安裝檔案記錄

軟體名稱 nsis 功能 製作安裝程式 學習文章 指令碼記錄 1.自啟動 針對當前使用者 writeregstr hkcu software microsoft windows currentversion run 啟動項名稱 啟動項命令 針對本機所有使用者 writeregstr hklm sof...

NSIS安裝檔案指令碼解釋

calendar.nsi 這是我使用的乙個小軟體的安裝檔案指令碼,其中包含了 使用者安裝目錄選擇 核心程式元件與快捷方式建立選擇 解除安裝程式 安裝程式名稱,將顯示在安裝程式對話方塊標題 name 日曆1900 2100 生成的單個安裝執行檔案 outfile calendar setup.exe ...

Linux安裝檔案

一 linux安裝檔案 linux常見的安裝為tar,zip,gz,rpm,deb,bin等。我們可以簡單的分為三類,第一 打包或壓縮檔案tar,zip,gz等,一般解壓後即可,或者解壓後執行sh檔案 第二 對應的有管理工具的deb,rpm等,通常的這類安裝檔案可以通過第三方的命令列或ui來簡單的安...