NSIS NSIS使用心得

2021-04-09 00:47:03 字數 4139 閱讀 7870

^_^,瀏覽量總算到100了,開心咯。

看來要繼續努力寫了,希望能用自己的一點點經驗幫助更多的人,為諸位節省時間做更有意義的事情。

在【心得ⅰ】中寫的是單程式的安裝方式,現在寫程式組的安裝。程式組含義很容易理解,就是對一組程式來進行安裝並且這些程式是可以根據使用者需要來選擇安裝的。

程式組的結構圖:

選擇方式1: 產品a+產品b+產品c【完全安裝】

產品a+產品組

……產品b   

……產品c

選擇方式2: 產品a+產品b

產品a+產品組

……產品b

……產品c【預設不選擇】

選擇方式3: 產品a+產品c

產品a+產品組

……產品b【預設不選擇】

……產品c

好,我們開始了…… (注釋

顏色為【color

】的表示新增內容)

"software/microsoft/windwos/currentversion/uninstall/$" #這裡定義的變數,最後會顯示在控制面板的新增/刪除程式的列表裡。

#先把程式組所要包含的單程式定義好

!define pro_a "產品a"

!define pro_b "產品b"

!define pro_c "產品c"

#接下來定義程式組安裝選項

!define inst_type_abc "安裝abc三個單程式"

!define inst_type_ab "安裝ab兩個單程式"

!define inst_type_ac "安裝ac兩個單程式"

setcompressor lzma #設定檔案壓縮格式,nsis共提供3種壓縮格式。

!include "mui.nsh" #引入新式使用者介面函式庫

!include "strfunc.nsh"

!include "library.nsh"

!define mui_abortwarning #安裝未完成,而使用者要退出時顯示提示。

!define mui_icon "安裝圖示"

!define mui_unicon "解除安裝圖示"

!define mui_headerimage #標題,可放產品/公司的。

!define mui_headerinage_right #標題所在位置,左/右。

!define mui_headerimage_bitmap "標題"

!define mui_welcomepage_title "歡迎使用「產品」安裝嚮導" #歡迎介面

!define mui_welcomepage_text "/r/n這個安裝嚮導將指引你完成「產品」的安裝程序。/r/n/r/n開始安裝前,建議先關閉其他所有應用程式。/r/n/r/n$_click"

!define mui_componentspage_**alldesc #這一設定是為了把安裝元件的顯示改為下拉列表方式

!insertmacro mui_page_welcome

!define mui_licensepage_text_top "閱讀協議的其餘部分,請按往下滾動頁面。" #協議顯示介面

!define mui_licensepage_text_bottom "如果同意協議中的條款,請選擇「接受協議中的條款」並$_click"

!define mui_licensepage_radiobuttons #協議條款接受選擇,也有別的協議接受方式,看個人愛好。

!define mui_licensepage_radiobuttons_text_accept "接受協議中的條款"

!define mui_licensepage_radiobuttons_text_decline "不接受協議中的條款"

!insertmacro mui_page_license "license.txt" #你的協議檔案

!insertmacro mui_page_components #程式元件介面,用來選擇要安裝的程式元件

!insertmacro mui_page_directory#程式的安裝目錄

!insertmacro mui_page_instfiles#程式安裝程序顯示

!insertmacro mui_page_finish#安裝完成介面

!insertmacro mui_unpage_welcome #解除安裝歡迎介面

!insertmacro mui_unpage_confirm #解除安裝確認介面

!insertmacro mui_unpage_instfiles #解除安裝程序顯示

!insertmacro mui_unpage_finish #解除安裝完成介面

!insertmacro mui_language "simpchinese" #介面語言設定【簡體中文】

name "產品名稱" #標題欄顯示文字

outfile "setup.exe" #輸出檔案

installdir "$programfiles/產品名稱"#程式安裝路徑,預設是"c:/programfiles/"

installdirregkey hkcu "software/產品名稱" ""

showinstdetails hide #顯示安裝詳細資訊,3種選擇。

showuninstdetails hide #顯示解除安裝詳細資訊,3種選擇。

brandingtext "nsis" #安裝介面左下角顯示的文字,預設是nullsoft install system vx.xx

insttype $ #每乙個型別都是乙個編號,從「1」開始,估計函式返回值是乙個正整數

insttype $

insttype $

#開始主程式,有所更新

section "產品a"

setautoclose true

sectionin 1 2  #安裝型別索引,表示此產品會在哪種安裝方式中被選擇

setoutpath $instdir/"產品"

file "./產品/產品a.exe"

secitonend

sectiongroup "產品a和b" #group表示乙個程式組

section "產品b"

sectionin 1 2   #產品b的安裝方式為1、2;產品c為1、3

setoutpath $instdir/"產品"

file "./產品/產品b.exe"

sectionend

section "產品c"

sectionin 1 3

setoutpath $instdir/"產品"

file "./產品/產品c.exe"

sectionend

sectiongroupend

section -post

writeuninstaller "$instdir/uninst.exe"

writeregstr hkcu "software/產品名稱" "" "$instdir"

writeregstr hklm "$" "" "$instdir/產品.exe"

writeregstr $ "$" "displayname" "$(^name)"

writeregstr $ "$" "uninstallstring" "$instdir/uninst.exe"

sectionend

section uninstall

delete "$instdir/uninst.exe"

delete /rebootok "$instdir/產品/產品a.exe"

delete /rebootok "$instdir/產品/產品b.exe"

delete /rebootok "$instdir/產品/產品c.exe"

rmdir /r /rebootok "$instdir"

deleteregkey hkcu "software/產品名稱"

deleteregkey hklm "$"

deleteregkey hklm "$"

sectionend

#對解除安裝部分做簡要說明,上面的方式是一次把所有程式都解除安裝掉,如果你想選擇解除安裝,可以看幫助【insttype】。

當然,要想把多程式安裝做的更人性話僅上面那些是不夠的,有很多很好的例子可以在 http://nsis.sourceforge.net/main_page 找到。寫了兩個心得體會,相信很多剛開始用nsis的n友們看了以後,一般的小任務應該能夠應付的了。^_^ 

frameset 使用心得

欲明白本篇 html徹底剖析 之標記分類,請看 標記一覽 也請先明白圍堵標記與空標記的分別,請看 html概念 框架概念 謂框架便是網頁畫面分成幾個框窗,同時取得多個 url。只需要 即可,面所有框架標記需要放在乙個總起的 html 檔,這個檔案只記錄了該框架如何分割 不會顯示任何資料,所以不必放入...

Access使用心得

今天臨時用access做資料庫,長期用sql server開發習慣了,總結一下現在為止用到的比較大的差異,以後有新的再補了 1 返回字串長度 len s lenb s 前者返回字元數,後者返回位元組數,並且access中text型別字元統一為2位元組,與sql2000不同。2 join的使用 acc...

vmware使用心得

成功在winxp環境中安裝了vista business版本,反之,亦然。可以建立工作組網路連線了,虛擬機器也可以訪問網際網路了。安裝說明 在安裝嚮導中,無論使用哪種網路連線形式,都不影響正確安裝。安裝後,可以編輯本地機和虛擬機器之間的網路連線形式。需要注意三個細節問題 1 網絡卡要設定為 電源啟動...