NSIS 設定 INSTDIR不生效

2021-10-03 01:32:35 字數 1339 閱讀 4306

nsis設定的頁面順序如下

!insertmacro mui_page_welcome 

!insertmacro mui_page_license ".\license.txt"

!define mui_page_customfunction_show handleinstalldir

!insertmacro mui_page_directory

!insertmacro mui_page_instfiles

!insertmacro mui_page_finish

歡迎介面-->授權協議-->自定義的模組-->選擇目錄。。。

選擇目錄之前有個模組用來檢查是否安裝,安裝了就不允許選擇目錄,權當公升級

function handleinstalldir

strlen $r2 $r1

$ $r2 > 2

strcpy $instdir $r1

call disableinstalldir

$functionend

function disableinstalldir

;禁用瀏覽按鈕

findwindow $0 "#32770" "" $hwndparent

getdlgitem $0 $0 1001

enablewindow $0 0

;禁止編輯目錄

findwindow $0 "#32770" "" $hwndparent

getdlgitem $0 $0 1019

enablewindow $0 0

functionend

結果列印$instdir已經被修改為我設定的路徑,目錄選擇介面的瀏覽和編輯控制項也成功禁用了,

可是路徑居然是預設的

installdir "$programfiles\$"

導致編輯也失效了,只有預設的安裝了

後來使用最簡單的安裝指令碼,在.oninit裡面初始化安裝目錄,居然成功了,可是nsis改了這些也沒跟我說,只能自己慢慢試了

function .oninit

call handleinstalldir

findprocdll::findproc "$.exe"

pop $r0

intcmp $r0 1 0 no_run

messagebox mb_iconstop "安裝程式檢測到$(^name)正在執行,請退出程式後重試"

quit

no_run:

functionend

.oninit中呼叫handleinstalldir有點浪費,做個初始化就可以了的

NSIS打包程式時解除安裝不淨問題

在用nisedit打安裝包後遇到三個問題 1 在重新包裝時,程式路徑會出現問題,會指向子資料夾中,程式就公出錯。而且多次重複包裝後檔案路徑會變長 原因 研究 發現是安裝時寫入的登錄檔中的程式路徑不對 解決 改為正確的路徑 section post writeuninstaller instdir u...

安裝govendor govendor不生效

go包管理工具 獲取govendor 使用gpvendor 提示未找到命令 vim bash profile path path home bin root go bin root go bin下面要有govendor二進位制檔案 多提一句 path變數就是你在linux中打出前面字母使用tab可以...

NSIS 設定檔案屬性的方法

原文 nsis 設定檔案屬性的方法 在nsis中,有以下方法可以對檔案的屬性進行設定。一是通過nsis的指令setfileattributes。多重屬性可用 隔開,有效的屬性為 normal 或 file attribute normal 你可以把該項縮寫為 0 archive 或 file att...