轉(zhuǎn)自:http://www.hanzify.org/teach/index.php?Go=Show::196-1108396800
NSIS簡介:
NSIS 是“Nullsoft 腳本安裝系統(tǒng)”(Nullsoft Scriptable Installation System)的縮寫,它是一個免費的 Win32 安裝、卸載系統(tǒng),它的特點:腳本簡潔高效;系統(tǒng)開銷小;當(dāng)然進行安裝、卸載、設(shè)置系統(tǒng)設(shè)置、解壓文件等等更不在話下,幾乎可以做所有的事情。更多的功能請閱讀藍色網(wǎng)際的《NSIS幫助文檔》。
對于制作NSIS的使用教程,藍色網(wǎng)際是NSIS方面的專家,她的《NSIS幫助文檔》就是一本NSIS的圣經(jīng),而對初學(xué)者來說,最頭疼的莫過于一大堆看不懂的代碼,對他們來說無異于一本天書。緣于此,特草此基礎(chǔ)教程,希望NSIS專家們勿見笑,不當(dāng)之處歡迎批評指正以期完善,也希望給初學(xué)者作個鋪墊。
工具:
NIS Edit+Nullsoft Installation System(NSIS)
[此兩款軟件都可以到世紀(jì)主站上下載到]
思路:腳本向?qū)В薷拇a=個性化安裝包
步驟:
I.利用向?qū)е谱靼惭b包:
1.安裝上述兩款,啟動NIS Edit,在“文件”菜單中“新建腳本:向?qū)?#8221;=>下一步”,如圖1:
附圖

2.設(shè)置應(yīng)用程序信息,如軟件名稱、版本、出版人等,如圖2。
當(dāng)然最一個網(wǎng)站可以留空,如果設(shè)置了,則安裝包會生成一個對應(yīng)網(wǎng)址的“Internet 快捷方式”。
附圖

3.設(shè)置程序選項,如安裝包圖標(biāo)、安裝程序文件、安裝包語言[這里選“SimChinese”]、用戶圖形界面及壓縮方式等,
我們可以選用默認值,也可以點擊對應(yīng)項目的按鈕或下拉菜單更改設(shè)置,如下圖3
附圖

4.設(shè)置安裝目錄及授權(quán)信息,如圖4后“下一步”:
附圖

5.選定程序文件,即我們要打包的文件,可以使用默認的“Mainsection”,
也可以根據(jù)需要進行更改或新建組別,
如果組比較多時,
你也可以設(shè)置是否“允許用戶選擇要安裝的組件”,如圖5。
附圖

完畢后進行“添加文件”操作,選定我們要打包的文件,如圖6,
完成自動后返回的圖5的界面,執(zhí)行下一步操作。
附圖

6.設(shè)置開始菜單中文件夾名稱及快捷方式,這里我們使用默認值,如圖7,按“下一步”:
附圖

7.指定安裝后要運行的程序,同上用默認值并設(shè)置相關(guān)運行參數(shù)及描述,
如果你和我一樣懶的話,或不想在安裝運行任何程序,則留空即可,如圖8:
附圖

8.這步是有關(guān)卸載程序的相關(guān)信息,如卸載時的提示、卸載的圖標(biāo)等,如圖9
附圖

9.至此完成向?qū)В鐖D10,,鉤選“保存腳本”、“轉(zhuǎn)換文件路徑到相關(guān)路徑”及“編譯腳本”
附圖

提示保存腳本路徑并自動編譯腳本,我們可以按或F9運行安裝程序進行預(yù)覽,向?qū)Мa(chǎn)生的安裝包效果圖如圖11所示:
附圖

II.修改代碼以個性化安裝包:
10.選擇可修改之處:
1)軟件LOGO[如圖11A]、安裝包標(biāo)題[圖11B]、圖11C、圖12、圖13
圖11見上樓
圖12如下
附圖

圖13如下
附圖

2)閃屏界面
11.修改代碼
1) 修改軟件LOGO:在源代碼“ MUI Settings”后面添加下列代碼:
|
以下是代碼片段:
!define MUI_WELCOMEFINISHPAGE_BITMAP "G:\temp\ pwr.bmp" |
|
注釋:引號內(nèi)為位圖的路徑,位圖大小大約為165*298
效果圖如圖14所示
附圖

2)修改安裝包標(biāo)題,在同上位置添加下列代碼:
|
以下是代碼片段:
!define MUI_WELCOMEPAGE_TITLE "\r\n PDF2all 5.35d 漢化版" |
|
注釋:\r\n為換行標(biāo)志
效果圖上樓如圖14所示
3)修改圖11C中的說明,同上位置添加下列代碼:
|
以下是代碼片段:
!define MUI_WELCOMEPAGE_TEXT " pdf2all是一個轉(zhuǎn)換器的集合,它能轉(zhuǎn)換包括doc2pdf (Word to PDF),xls2pdf (Excel Sheet到PDF),ppt2pdf(PowerPoint到PDF),mdb2pdf (Access到PDF),ps2pdf(PostScript到PDF),pdf2jpg(PDF到JPEG),pdf2bmp(PDF到BMP),pdf2tiff(PDF到TIFF),pdf2eps(PDF到EPS),pdfMerge(合并PDF文件),pdf2ppt(PDF到PowerPoint)。\r\n\r\n 軟件漢化:高芳鑾 (Raindy)\r\n\r\n $_CLICK" |
|
效果圖如圖14所示
4)對圖12中的修改,在源代碼:
|
以下是代碼片段:
ShowInstDetails show
ShowUnInstDetails show |
|
后添加:
|
以下是代碼片段:
BrandingText " 軟件漢化:高芳鑾 (Raindy)" |
|
效果圖如圖15所示
附圖

5)在完成添加“漢化說明”,只要在源代碼:
后添加:
|
以下是代碼片段:
!define MUI_FINISHPAGE_SHOWREADME "$INSTDIR\漢化說明.txt"
!define MUI_FINISHPAGE_SHOWREADME_TEXT "漢化說明" |
|
效果所示
附圖

6)閃屏界面,可以在源代碼中加入下列代碼即可:
A、普通效果
|
以下是代碼片段:
Function .onInit
SetOutPath $TEMP
File /oname=spltmp.bmp "G:\Temp\Nsisres\splash.bmp"
splash::show 2300 $TEMP\spltmp
Pop $0
FunctionEnd |
|
效果圖如此軟件下載:
pdf2all-setup.rar
B、漸隱閃屏
|
以下是代碼片段:
Function .OnInit
InitPluginsDir
File /oname=$PLUGINSDIR\splash.bmp "G:\Temp\Nsisres\splash.bmp"
advsplash::show 1500 800 600 -1 $PLUGINSDIR\splash
Functionend |
|
7)背景音樂[貫穿安裝過程]
|
以下是代碼片段:
Var hmci
Function .OnInit
InitPluginsDir
SetOutPath $PLUGINSDIR
File "G:\Temp\Nsisres\music.mp3" [說明:源MP3的存放路徑]
System::Call msvfw32.dll::MCIWndCreate(i 0, i 0,i 0x0070, t "$PLUGINSDIR\music.mp3") i .r0
SendMessage $0 0x0465 0 "STR:play repeat"
System::Call user32.dll::ShowWindow(i r0, i 0)
StrCpy $hmci $0
Functionend
Section
;add your codes
SendMessage $hmci 0x0010 0 0
Sectionend |
|
后語:
以上僅是NSIS制作安裝包最基本的操作,供初學(xué)者入門之用,故云“初級篇”。
希望不會怡笑大方,更希望藍MM、陳敏毅老大等NSIS高手的中高級教程:)
相關(guān)資料下載[以Pdf2allV5.35d為例,
可直接點擊下載]
全文的Word文檔附在附件中
NSIS.rar
偶以Pdf2allV5.35d為例,
制作了安裝包制作
動畫演示
[
可直接點擊下載]
相關(guān)文件列表如下:
動畫演示 [pdf2all-movie.exe]
安裝包的NSIS腳本代碼 [PDF2all-nsis.nsi.txt]
成品的安裝包 [pdf2all-setup.exe]
常見修改的代碼 [code.txt]
NSIS基礎(chǔ)教程CHM版 [NSIS安裝制作基礎(chǔ)教程(CHM格式)-特別感謝tracky]
感謝chenmy老大提供空間:)
偶的閃屏圖:
附圖

漸現(xiàn)漸隱的代碼:
|
以下是代碼片段:
Function .OnInit
InitPluginsDir
File /oname=$PLUGINSDIR\splash.bmp c:\test.bmp
advsplash::show 1500 800 600 -1 $PLUGINSDIR\splash
Functionend |
|
背景音樂(貫穿安裝全過程):
|
以下是代碼片段:
Function .OnInit
InitPluginsDir
SetOutPath $PLUGINSDIR
File "c:\a.mp3"
System::Call msvfw32.dll::MCIWndCreate(i 0, i 0,i 0x0070, t "$PLUGINSDIR\a.mp3") i .r0
SendMessage $0 0x0465 0 "STR:play repeat"
System::Call user32.dll::ShowWindow(i r0, i 0)
StrCpy $hmci $0
Functionend
Section
;add your codes
SendMessage $hmci 0x0010 0 0
Sectionend |
|
背景音樂2:
|
以下是代碼片段:
Section/Function
SetOutPath $PLUGINSDIR
File $WINDIR\MEDIA\chimes.wav
BgImage::Sound /NOUNLOAD /WAIT "$PLUGINSDIR\chimes.wav"
BgImage::Clear /NOUNLOAD
Sectionend/Functionend |
|
最后一種方法使用了 bgimage 插件,安裝程序執(zhí)行到該插件時會等待 wav 播放完再繼續(xù)執(zhí)行。
raindy
謝謝dujuan509兄
如果閃屏效果[漸隱]+背景音樂[全程]放在一起
那代碼該如何修改?
偶兩者無法兼得
望不吝賜教
|
以下是代碼片段:
outfile test.exe
Var hmci
Function .OnInit
InitPluginsDir
SetOutPath $PLUGINSDIR
File "c:\a.mp3"
System::Call msvfw32.dll::MCIWndCreate(i 0, i 0,i 0x0070, t "$PLUGINSDIR\a.mp3") i .r0
SendMessage $0 0x0465 0 "STR:play repeat"
System::Call user32.dll::ShowWindow(i r0, i 0)
StrCpy $hmci $0
File /oname=$PLUGINSDIR\splash.bmp c:\test.bmp
advsplash::show 1500 800 600 -1 $PLUGINSDIR\splash
Functionend
Section
;add your codes
sleep 5000
SendMessage $hmci 0x0010 0 0
Sectionend |
raindy
謝謝dujuan509兄
已經(jīng)學(xué)會了:)
可惜背景音樂只能支持MP3格式
如果能支持midi等就好了
藍色網(wǎng)際
MIDI 請參考這個 DEMO
附件
midi.zip
藍色網(wǎng)際
推薦一個 NSIS 的快速編輯器 - NotePad2。雖然不是 NSIS 專門編輯器不過有時候比 Venis 方便,因為 Venis 不支持文本塊操作,而且 Venis 對語法高亮做得不是很好。NotePad2 的語法高亮是根據(jù)后綴名來確定的,只要你打開 NSI 文件不用任何設(shè)置就會自動語法高亮。
其實 NotePad2 作為記事本替代者也非常不過,界面非常相似,而 NotePad2 功能強大了好多。
你可以在 http://foobar.nease.net/nsis/np2.exe 下載我修改的版本,主要補全了 NSIS 語法高亮,原版由于很久沒更新 NSIS 的語法高亮代碼,所以有一些新增的 NSIS 指令不能高亮顯示。
并作了一些優(yōu)化,做要是讓它更像記事本
貼個圖:
附圖
dujuan509
引用 (zkdpower @ 2005年01月25日 23時08分) |
我想問一下各位,如何把安裝頁面中的“Setup將安裝……”中的Setup改成別的字 |
你指的是選擇安裝目錄頁面的提示文字吧?
只需在
|
以下是代碼片段:
!insertmacro MUI_PAGE_DIRECTORY |
|
前面添加一行:
|
以下是代碼片段:
!define MUI_DIRECTORYPAGE_TEXT_TOP "你需要的文字" |
|
藍色網(wǎng)際
引用 (zjj1988101 @ 2005年01月26日 09時49分) |
引用 (藍色網(wǎng)際 @ 2005年01月26日 09時03分) |
用 NSIS 2.03 的吧,那個版本簡體語言符合我們的習(xí)慣。 |
請教藍前輩~
NSIS的閃屏圖片的格式支持幾種格式?
只支持位圖嗎?可以支持其他圖片格式嗎?
|
這個插件支持 JPG、GIF
附件 newadvsplash.zip
藍色網(wǎng)際
raindy 有時間的話看看我這個漢化補丁的 NSIS 腳本,然后寫一篇教程,嘿嘿,寫東西你比較拿手
基本上包括了做補丁包含的大部分情況:
自動查詢原版軟件安裝目錄并包含目錄修正
原版軟件的備份和恢復(fù),以及漢化補丁的卸載
對原版進行 MD5 校驗
把漢化補丁應(yīng)用到原版軟件不同版本
注冊表的修正,主要是右鍵菜單
數(shù)據(jù)庫的漢化
讀取、修改、寫入注冊表二進制類型數(shù)據(jù)
NSIS 做補丁的優(yōu)點是生成文件比較小,而且還可以包含 N 個版本的補丁
附件
hb-acdsee7_pub[1].nsi.zip
raindy
引用 (水木魚 @ 2005年01月27日 17時10分) |
請問題頭的圖標(biāo)是怎么加的 |
設(shè)置了自定義安裝圖標(biāo)就會自動顯示的,不需要另外添加,自定義安裝圖標(biāo):
|
以下是代碼片段:
!define MUI_ICON "G:\Temp\Nsisres\PDFsetup.ico" |
|
這一點和INNO不同,INNO中則需要在[setup]中設(shè)置:
|
以下是代碼片段:
WizardSmallImageFile=G:\軟件測試\嘗試漢化\安裝包\PDF2all\sm.bmp |
|
其他需要個性化的地方,建議閱讀一下藍色網(wǎng)際翻譯的NSIS幫助文檔
zkdpower
請問各位如何改這些
第一個就是如何把插入的headerimage圖片放到右邊(默認是在左邊)
第二個就是把headerimage上面的字改掉
謝謝
附圖
dujuan509
1、在腳本開頭增加一行:
|
以下是代碼片段:
!define MUI_HEADERIMAGE |
|
2、在 !insertmacro MUI_PAGE_LICENSE "c:\License.txt"前增加兩行:
|
以下是代碼片段:
!define MUI_PAGE_HEADER_TEXT 111
!define MUI_PAGE_HEADER_SUBTEXT 222 |
|
藍色網(wǎng)際
你還是先看看 MUI 文檔吧,界面的設(shè)置都作了說明
http://foobar.nease.net/nsis/mui/index.html
zkdpower
請問藍色網(wǎng)際,在你的MUI 文檔中有
“MUI_HEADERIMAGE_RIGHT
令本應(yīng)顯示于左邊的頁眉圖像顯示于右面(當(dāng)使用 RTL 語言時, 它將會顯示于左邊而不顯示于右邊).”
這么一段話,請問何為RTL語言呢,本人愚拙,望指點
藍色網(wǎng)際
RTL 就是 Right to Left,從右到左書寫的語言,大概像阿拉伯這樣的語言吧。
restools
venis function 向?qū)Чδ茉?NISEdit 上完整實現(xiàn),晚上或明天放出,不過需要人幫忙把向?qū)_本編寫完整,因為寫程序時只是拿了4個具代表性的 function 來作為測試,這是這次放出版本實現(xiàn)的功能。要知道 NSIS 的 funciton 有這么多啊。
以下是代碼片段:
; NSIS 函數(shù)向?qū)募?br />
; 腳本解釋
; Textbox(文本框) 如果不寫入這項 Texbox 默認使用 參數(shù)1(不帶引號)
; 0:(不顯示) 1:(不帶引號) 2:(帶雙引號) 3:(多行顯示)
;
; Checkbox(允許參數(shù)按鈕) 如果不寫入這項 Texbox 默認使用 參數(shù)0(必填參數(shù))
; 0:(必填參數(shù)) 1:(可選擇) 2:(將來使用)
;
; Button(選擇參數(shù)填充按鈕) 如果不寫入這項 Button 默認使用 參數(shù)0(選擇參數(shù))
; 0:(不顯示) 1:(瀏覽選擇文件) 2:(瀏覽選擇目錄) 3:(選擇參數(shù)) 4:(選擇排序后的參數(shù)) 5:(選擇可復(fù)合參數(shù))
; 6:(選擇已排序的可復(fù)合參數(shù)) 7:(可選擇目錄或文件)
;
; 標(biāo)記: %%LABELS%% -- 用在 Goto 這類函數(shù)中的 標(biāo)記 參數(shù)
;
; 函數(shù): %%FUNCTIONS%% -- 用在 Call 這類函數(shù)中的調(diào)用 參數(shù)
;
; 以上兩個常用變量是會自動檢測 NSIS 腳本里面的已有標(biāo)記和函數(shù)的
;
;例子:
;[Abort] -- 函數(shù)名字
;Help=取消安裝,停止執(zhí)行腳本,并且在狀態(tài)顯示里顯示用戶信息。 -- 在函數(shù)向?qū)υ捒蛑信赃叺暮喢鲙椭?br />
;NumArgs=1 -- 函數(shù)共有幾個參數(shù)
;Arg1=用戶信息 -- 顯示在參數(shù)頂上的提示語句
;Button1=0 -- 該按鈕不顯示
;Checkbox1=0 -- 該參數(shù)為必填項
;Textbox1=2 -- 該參數(shù)為帶雙引號的字符串
;
;
;如果是多行字符例如簡明幫助,如果你要強行換行,請用英文的逗號,如果你必須要顯示英文的逗號,請用雙引號括起整個字符串。
;Help=""Cancels the install, stops execution of script, and displays user_message in the status display.""
;
[Abort]
Help=取消安裝,停止執(zhí)行腳本,并且在狀態(tài)顯示里顯示用戶信息。
NumArgs=1
Arg1=用戶信息
Checkbox1=0
Button1=0
Textbox1=2
[BringToFront]
Help=使安裝程序窗口可見并把它帶到其他窗口的最前端。
NumArgs=0
[CreateShortCut]
Help=創(chuàng)建一個指向“目標(biāo)文件”的快捷方式“快捷文件.lnk”,可以帶“參數(shù)”參數(shù)。
NumArgs=8
Arg1=快捷文件.lnk
Checkbox1=0
Button1=0
Textbox1=2
Arg2=目標(biāo)文件
Checkbox2=0
Button2=1
Textbox2=2
Arg3=參數(shù)
Checkbox3=1
Button3=0
Textbox3=2
Arg4=圖標(biāo)文件
Checkbox4=1
Button4=1
Textbox4=2
Arg5=圖標(biāo)索引號
Button5=0
Checkbox5=1
Textbox5=1
Arg6=啟動選項
Button6=3
Checkbox6=1
Textbox6=1
Options6=SW_SHOWNORMAL,SW_SHOWMAXIMIZED,SW_SHOWMINIMIZED
Arg7=鍵盤快捷鍵
Button7=0
Checkbox7=1
Textbox7=2
Arg8=描述
Button8=0
Checkbox8=1
Textbox8=2
[Goto]
Help=如果指定了標(biāo)記,則跳轉(zhuǎn)到“要跳轉(zhuǎn)的標(biāo)記:”。
NumArgs=1
Arg1=要跳轉(zhuǎn)的標(biāo)記 | +偏移| -偏移| 用戶變量(目標(biāo))
Textbox1=1
Checkbox1=0
Button1=3
Options1=%%LABELS%%
[Call]
Help=調(diào)用“函數(shù)名”函數(shù)。如果在 Uninstall 區(qū)段,Call 僅能調(diào)用以“un.”開頭的函數(shù)名。
NumArgs=1
Arg1=函數(shù)名 | :標(biāo)記名
Button1=3
Checkbox1=0
Textbox1=1
Options1=%%LABELS%%,%%FUNCTIONS%%
|
|
顯示效果

2.彈出函數(shù)編輯窗口:

3.確定后,輸入,這里一提的是,輸入時,會自動根據(jù)上一行代碼的縮進,自動在輸入的函數(shù)行前面添加前導(dǎo)空格,以減少自己再輸入前面的空格。

==================
ISS2NSI v1.0a2
==================
ISS2NSI is a tool for convert Inno Setup script files into NSIS script files.
Usage:
==================
Program:
At the command prompt write: iss2nsi issscript.iss [nsiscript.nsi]
if nsiscript.nsi is no specified then the converted script will be
saved with the same name of the issscript.iss but with extension .nsi.
NIS Edit Plugin:
1- Close HM NIS Edit.
2- Put hmne_iss2nsi.dll in the plugins directory
(Default $PROGRAMFILES\HMSoft\NIS Edit\Plugins)
3- Start HM NIS Edit.
4- You will found a new item in the tools menu called "Convert InnoSetup script".
NOTE: Before compile the converted script please check it, because
complete compatibility is NOT available. I design this tool to convert my
Inno Setup scripts and is not tested with more complex scripts.
The source code is included if you want to contribute to the project
for make the converted script 100% compatible with the original.
Please send my your modifications to ranametal@blistering.net
Note that this project is a modification to the Inno Setup 3.0.6
compiler and modifications to the Inno Setup source files are under
the Inno Setup license (see: src\is-src\is-license.txt).
Note: the files in the src\is-src directory are unmodified Inno Setup
source files needed by the Compile.pas unit located in the src directory
---------------------------------------------------------
hmne_iss2nsi.dll 把這個文件放到 NISEdit 目錄下的 Plugins 中就可以使用,沒有詳細測試,不過如果是針對版本的話, Inno Setup 3.0.6 ,估計應(yīng)該沒問題吧。
ISS2NSI.rar
雖然版本太低,用來從 ISS 的腳本轉(zhuǎn)向?qū)W習(xí) NSIS 應(yīng)該容易點吧。
ISS2NSI 源碼下載。
沒時間去看看它,只是把它編譯成了一個DLL。有時間看看它是什么原理。
ISS2NSI_Src.rar
NISEdit 的增強版本,希望有人來幫幫忙,增加一下函數(shù),否則這個版本也強不到哪里去。
把里面的那些文件放入 NISEdit 的目錄中,為了區(qū)分原版,程序改名為 VNISEdit。
兩個版本可以同時存在,不過你要把 VNISEdit 設(shè)為默認編輯器,才可以默認用它來打開。
修正:
1.添加一種菜單的皮膚。
2.增加 NSIS 函數(shù)向?qū)Чδ堋#愃?Venis 中的 function 功能)
4.改程序調(diào)用幫助時,不要把幫助窗口置頂,因為置頂會令到查看幫助時不能切換會編輯器窗口。
最新功能(區(qū)段結(jié)構(gòu)分析)
左圖是VNISEdit解釋的,右圖是Venis分析的。分析對象(makensis.nsi)

全景圖:試一下唄,分析速度比 Venis 好很多的。基本上感覺不到視圖的閃動。線程實時分析,只要改動代碼,視圖會立刻作出反應(yīng)。

請問下面那些問題怎樣做的,
1、怎樣控制自定義面的“下一步”按鈕的可用與不可用
2、怎樣為自定義頁面上的組件添加Change事件呢
3、我在這個網(wǎng)站里下載的foobar漢化增強版的安裝文件里看到頁面“MUI_PAGE_COMPONENTS”是怎么做到的,就是怎么把那個頁面的左邊改為能顯示描述內(nèi)容和隱蔽一些文本
colonel
藍色網(wǎng)際
對于控制下一步按鈕來說,有三個階段分別是:頁面初始化之前、頁面初始化時、頁面要關(guān)閉時。不同的階段對應(yīng)的插入函數(shù)不同。
比如要在頁面初始化之前禁止下一步按鈕,MUI 界面可以這樣
以下是代碼片段:
!define MUI_PAGE_CUSTOMFUNCTION_PRE ComponentPre
!insertmacro MUI_PAGE_COMPONENTS
Function ComponentPre
GetDlgItem $0 $HWNDPARENT 1
EnableWindow $0 0
FunctionEnd |
colonel
那“2、怎樣為自定義頁面上的組件添加Change事件呢”,我自定義了一個配置頁面,我想用戶在完成配置才可激活“下一步”按鈕,這個怎么做的呢
藍色網(wǎng)際
需要給控件加上 NOTIFY 的標(biāo)記。
例子在我的簽名里有。
需要先了解 GetDlgItem 和 EnableWindow 指令的作用。
colonel
這個問題呢
3、我在這個網(wǎng)站里下載的foobar漢化增強版的安裝文件里看到頁面“MUI_PAGE_COMPONENTS”是怎么做到的,就是怎么把那個頁面的左邊改為能顯示描述內(nèi)容和隱蔽一些文本
怎樣使“MUI_PAGE_COMPONENTS”中的樹目錄只能在點選復(fù)選框才被選中呢
藍色網(wǎng)際
這個用 Resource Hacker 調(diào)整一下控件就行了。默認的 UI 文件是 NSIS\Contrib\UIs\modern.exe
到我的簽名里下一個特別版的 makensis.exe。
colonel
我不想在組件選擇頁面中用 onMouseOverSection 來顯示 描述 ,如果架設(shè)函數(shù)可以增加的話,我就想到這個 “回調(diào) onMouseDownSection ”
我是想通過組件目錄里的 OnChange 事件來顯示
我不懂VC++吖,如果我會的話就可以像MM你那樣去改它的代碼了
藍色網(wǎng)際
特別版的就是這樣啊,當(dāng)你點擊組件的時候描述區(qū)域才會顯示或改變。
普通版的只要鼠標(biāo)移上去就顯示了。你沒試過嗎。
colonel
哦~~~~~~~試到了,原來你是改了onMouseOverSection 回調(diào),對啦,MM你有沒有做過 組件的OnChange 事件嗎?主要是用在自定義頁面上的
是用這個嗎?Call shell32.dll::SHChangeNotify
藍色網(wǎng)際
不知道你說的“組件的 OnChange 事件”是什么意思。
是不是當(dāng)組件選擇更改的時候調(diào)用的函數(shù)呢?如果是的話那直接使用 Function .onSelChange 就行了。
wq99
各位好:我是新手,
我在看function時,沒發(fā)現(xiàn)參數(shù)的傳入。
可能我的思維方式不對。
function Fname
functionend
參數(shù)應(yīng)該怎么傳呢?
藍色網(wǎng)際
NSIS 的函數(shù)其實是個假函數(shù),并不能像 C++ 那樣傳遞參數(shù),如果你需要傳遞參數(shù)請使用堆棧。
一個典型的例子請看附錄的 Get parent directory。
那如果一個Edit里的內(nèi)容發(fā)生變化,另一個組件也跟關(guān)變化,這個Edit 的Change事件去寫呢
PS:可能我習(xí)慣于使用delphi所以有時說到的組件事件名稱與你不一樣吧
colonel
那如果一個Edit里的內(nèi)容發(fā)生變化,另一個組件也跟關(guān)變化,這個Edit 的Change事件去寫呢
PS:可能我習(xí)慣于使用delphi所以有時說到的組件事件名稱與你不一樣吧
藍色網(wǎng)際
你可以參考一下 NSIS\Contrib\InstallOptions\testnotify.nsi
wq99
File "${LOCATION}\$R0"
$R0是一個文件,結(jié)果
說沒有這個文件,
File "${LOCATION}\123.exe"
那就可以了。
奇怪,我第一句寫錯了么?
File "${LOCATION}\${R0}"這樣也不對。
藍色網(wǎng)際
你可以先在資源管理器里看看是否有 $R0 這個文件。一般來說很少有這種不帶擴展名的奇怪文件,況且不帶擴展名的話很容易被當(dāng)作目錄來處理。
一般來說編譯器的報告是正確的,這里有一個測試腳本,你可以試試看。
test.zip
wq99
啊~對不起啊,我沒說仔細。
$R0是變量,是從堆棧里Pop出來的。
即123.exe.
File "${LOCATION}\$R0"
即File "${LOCATION}\123.exe"
以下是代碼片段:
Push "123.exe"
……
Function InstallOne
Pop $R0
DetailPrint $R0
SetOutPath "$INSTDIR"
File "${LOCATION}\$R0"
ExecWait ’"$INSTDIR\$R0"’
FunctionEnd |
DetailPrint $R0
是可以打印出 123.exe
改成File "${LOCATION}\123.exe"是可以的。
怎么用$R0就不行了呢?
藍色網(wǎng)際
File 指令后面的文件必須是編譯時當(dāng)前系統(tǒng)存在的文件,而 $R0 要在編譯后才有值當(dāng)然會出錯。變量是運行時才有效的。
如果你想改名的話請使用 File "/oname=目標(biāo)文件" "本地文件"
oname= 后面的目標(biāo)文件可以用變量。
arthur810
為什么我的“安裝程序語言”里面是空的
如圖,請指教,謝謝
注:WinXP SP2簡體中文系統(tǒng)
zhp0083
手動指定一次就會有了
以下是代碼片段:
!insertmacro MUI_LANGUAGE "SimpChinese" |
sjhome
請問NSIS只能添加一個目錄下的文件,怎么樣能添加所以目錄下的文件呢?怎么設(shè)置呢?多謝!
如圖所示.
只能添加"Counter-Strike Source"目錄下的文件,怎么樣能添加"Counter-Strike Source下的bin文件,config文件及所以文件夾"呢?

藍色網(wǎng)際
File 可以使用 /r 或 /x 。