世界上许多东西在对比中让你回味,心晴的时候,雨也是晴;心雨的时候,晴也是雨.

NSIS使用教程

上一篇 / 下一篇  2006-09-06 20:36:24 / 天气: 阴雨 / 心情: 平静 / 个人分类:学习

NSIS简介: 杭州博客网 dH0x Fa+o5Tn
  NSIS 是“Nullsoft 脚本安装系统”(Nullsoft scrīptable Installation System)的缩写,它是一个免费的 Win32 安装、卸载系统,它的特点:脚本简洁高效;系统开销小;当然进行安装、卸载、设置系统设置、解压文件等等更不在话下,几乎可以做所有的事情。更多的功能请阅读蓝色网际的《NSIS帮助文档》。杭州博客网$w z BW*Q#WB/xDl"xQdZ
  对于制作NSIS的使用教程,蓝色网际是NSIS方面的专家,她的《NSIS帮助文档》就是一本NSIS的圣经,而对初学者来说,最头疼的莫过于一大堆看不懂的代码,对他们来说无异于一本天书。缘于此,特草此基础教程,希望NSIS专家们勿见笑,不当之处欢迎批评指正以期完善,也希望给初学者作个铺垫。杭州博客网K |&Ymv }%@+`

$CldDw$s0工具:杭州博客网(OsCl4B#mGF'BM
  NIS Edit+Nullsoft Installation System(NSIS)杭州博客网R#El\#la-I Nw_ b5N
  [此两款软件都可以到世纪主站上下载到]杭州博客网c_;O*X | c1M

6otk#{R9s S0思路:脚本向导+修改代码=个性化安装包杭州博客网-pI;V tV-~A]
杭州博客网#Y,NN!|d9VKfM
步骤
v ])LEtFOX {0杭州博客网 bZ,wi%\:s} HU
I.利用向导制作安装包:杭州博客网EqJ7h%X1[yJ%Y&C
杭州博客网 lW^)T\kA
1.安装上述两款,启动NIS Edit,在“文件”菜单中“新建脚本:向导”=>下一步”,如图1: 杭州博客网 G$h0\eTx;`%P

gJZhb#g;x0附图
:~4?G)?J%q+P4Q0附图

2.设置应用程序信息,如软件名称、版本、出版人等,如图2。
!^0FJ _8Cjx-md0当然最一个网站可以留空,如果设置了,则安装包会生成一个对应网址的“Internet 快捷方式”。 杭州博客网*m9O"d aE
杭州博客网.L_(N1`6c,|
附图 杭州博客网+w2Z*Mn cXj PnA9}d
附图

3.设置程序选项,如安装包图标、安装程序文件、安装包语言[这里选“SimChinese”]、用户图形界面及压缩方式等,杭州博客网C:l_n"eI P%^[
我们可以选用默认值,也可以点击对应项目的按钮或下拉菜单更改设置,如下图3
3uF4p#l*Lb0
X/U oXFu0附图
2Qg%Sl#iz0附图

4.设置安装目录及授权信息,如图4后“下一步”: 杭州博客网 ?9DY E$MRwZ M&_
杭州博客网k!v:v.ae5UC*I
附图
m6R&M hnK0附图

5.选定程序文件,即我们要打包的文件,可以使用默认的“Mainsection”,
[ CFN!Xp [c$l0也可以根据需要进行更改或新建组别,
}7|qH"\ T]&yPl'eq0如果组比较多时,
U5\W"PSj \0你也可以设置是否“允许用户选择要安装的组件”,如图5。
R$i(T0K}/`th0杭州博客网9Bh?5}` T,t
附图
GJYY-[+_9H0附图

完毕后进行“添加文件”操作,选定我们要打包的文件,如图6,
"d*l0[$J eN)Fw.P0完成自动后返回的图5的界面,执行下一步操作。 杭州博客网 m^W'oZk` W

[4m{a4JP0附图
\4K(N,t"|`T0附图

6.设置开始菜单中文件夹名称及快捷方式,这里我们使用默认值,如图7,按“下一步”:
e F V'Py~0
2f7u!Q1{ Cm^S7rk0附图
C@ M f1O7N0附图

7.指定安装后要运行的程序,同上用默认值并设置相关运行参数及描述,杭州博客网M{_m j
如果你和我一样懒的话,或不想在安装运行任何程序,则留空即可,如图8: 杭州博客网)WXAPtk

.OfB'j/q m0附图
m;?{y^'_"\0附图

8.这步是有关卸载程序的相关信息,如卸载时的提示、卸载的图标等,如图9 杭州博客网%CdIL:W

` PI}Zc+Tf0附图
g0U bU|0附图

9.至此完成向导,如图10,,钩选“保存脚本”、“转换文件路径到相关路径”及“编译脚本” 杭州博客网0ZWG|:L_D@g
杭州博客网9j$F A` b:S
附图
U sU f eZ1P"??0附图

提示保存脚本路径并自动编译脚本,我们可以按或F9运行安装程序进行预览,向导产生的安装包效果图如图11所示:
fk5j[| CI0
m/Y6OC-|f#P Vj0杭州博客网w]3T3iy!s6Z"O s
附图 杭州博客网eJeB](Q(n
附图

II.修改代码以个性化安装包:杭州博客网aPT:Rd

4n J;?St010.选择可修改之处:杭州博客网 l-\ eBt&`0w2j9{2t
杭州博客网/y/y~o8C
1)软件LOGO[如图11A]、安装包标题[图11B]、图11C、图12、图13
iMvr T Y d0
jdF+u:@n Q-n0图11见上楼杭州博客网"o(U2Sw F%{o0ri'R%p
杭州博客网!w P9a1zE.w8P? {
图12如下
y qMggE QP l0
W:C;OU*w;j0f0附图 杭州博客网?0A+l |V `U
附图

图13如下
8Ubh| [+e H]&L0杭州博客网9?rE m:FYi5o+Q:I
附图
$|0_.dU&o$Gn2e0附图

2)闪屏界面杭州博客网4U3Y8B?9L;qJa.h
杭州博客网Ema*DHYt
11.修改代码杭州博客网/ORne)p"D

I$Cf&m6Du"\ n,[f^01) 修改软件LOGO:在源代码“ MUI Settings”后面添加下列代码:

 

 
以下是代码片段:
3H8}\bK9Tf)l9iR0!define MUI_WELCOMEFINISHPAGE_BITMAP "G:\temp\ pwr.bmp"

 


9h K&x4|$f;SC^'l0  注释:引号内为位图的路径,位图大小大约为165*298
j*J5k5|N0j&?e1TO0杭州博客网+h:p%@;Is1R l^ [
  效果图如图14所示 杭州博客网-Kr+gp7UF)j^M__
杭州博客网4bu#b!np H_
附图
:a8] yU~sh K9AU0附图
 
2)修改安装包标题,在同上位置添加下列代码:杭州博客网Q0I(u@rZe
 
 
以下是代码片段:杭州博客网-\ G{'` j0Oh
!define MUI_WELCOMEPAGE_TITLE "\r\n PDF2all 5.35d 汉化版"
  杭州博客网(}(jGM"l
  注释:\r\n为换行标志
b l-y*z A0  
W!Z5Az2hX K#u0  效果图上楼如图14所示杭州博客网8g g RW nhJ_
杭州博客网8|"el&zD!Gl
3)修改图11C中的说明,同上位置添加下列代码:杭州博客网n7IO6[ c
 
以下是代码片段:杭州博客网1A pgK.V FsF
!define MUI_WELCOMEPAGE_TEXT "  pdf2all是一个转换器的集合,它能转换包括doc2pdf (Word to PDF),xls2pdf (Excel Sheet到PDF),ppt2pdf(PowerPoint到PDF),mdb2pdf (Access到PDF),ps2pdf(Postscrīpt到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"

7IS$a5I1Wp/[a J.o3E0  杭州博客网)rIR!~ mO*_)p
  效果图如图14所示杭州博客网8wB#C2Zz*R @ x q
 
4)对图12中的修改,在源代码:杭州博客网sLt t}v
 
以下是代码片段:杭州博客网nZnf6w
ShowInstDetails show 杭州博客网7n2c`&xu!cN8t
ShowUnInstDetails show
杭州博客网#N3^yU#m3T;J
杭州博客网$ya(xjP%Fi+nH
后添加:
.S:u-iEF irD H8TW@0
 
以下是代码片段:
&mlV'N_ vy'_6{ k8r0BrandingText " 软件汉化:高芳銮 (Raindy)"
杭州博客网]m6@1WV&pC ?$v
杭州博客网'C%V,k;cL
效果图如图15所示
6{"~p$iH+u^0杭州博客网3nz4rM uF$mY|k
附图 杭州博客网3i-{*C&CqWSQ
附图
 
5)在完成添加“汉化说明”,只要在源代码:杭州博客网S-l8}(v d3E
 
以下是代码片段:杭州博客网MwopMO C.z`,p
; Finish page

1n(m$q@HS|&k^0后添加: 杭州博客网v}| S`M1@M
 
以下是代码片段:杭州博客网x!H*? qe
!define MUI_FINISHPAGE_SHOWREADME "$INSTDIR\汉化说明.txt" 杭州博客网 eK,j }_#n(}J"p-[
!define MUI_FINISHPAGE_SHOWREADME_TEXT "汉化说明"
杭州博客网~|wU[};S1H
效果所示
:Po&TX4z"P)R2[O.P0杭州博客网z5b Rz Ms'_.C
附图 杭州博客网9eq0K7s-[ H6pIJ
附图
 
6)闪屏界面,可以在源代码中加入下列代码即可:
A[^ yQ6d0A、普通效果
M)O!u7{!@1a/D0
 
以下是代码片段:杭州博客网PkG? I
Function .onInit 杭州博客网3[C!J7jY)vY
SetOutPath $TEMP
3A,O {:rtsuR9m R.h0File /oname=spltmp.bmp "G:\Temp\Nsisres\splash.bmp"
T^0f$W6J bc7zwG0杭州博客网*Fp ~eO3h'eQF
splash::show 2300 $TEMP\spltmp 杭州博客网B Ji/i^b@
杭州博客网B kQR4BiCti
Pop $0
k)|JG6lo6f$fg0
%z qg,WJ0FunctionEnd
杭州博客网f1{ u{ {K)}
杭州博客网w };CPy`w o
效果图如此软件下载:pdf2all-setup.rar
Mf+q UW4Bn#LP0B、渐隐闪屏杭州博客网d*Qt,q i^
 
以下是代码片段:
q3Z-G3\aTE.n0Function .OnInit 杭州博客网.hjw1w'V2x
InitPluginsDir
F;q/@4y p kNC0File /oname=$PLUGINSDIR\splash.bmp "G:\Temp\Nsisres\splash.bmp"
Y;EgS5l;E F0advsplash::show 1500 800 600 -1 $PLUGINSDIR\splash
v0Hi#G TQ]-k/p9UP0Functionend
杭州博客网I2]8] ~._
杭州博客网|@7DU6h"\1w!Y0o[

*?%r%lt]m Y TO07)背景音乐[贯穿安装过程]杭州博客网-rP4BA0~&v1db ^
杭州博客网3kS WQ}3eSv.d
 
以下是代码片段:杭州博客网 C;}A5a(l.T(z'J
Var hmci
_!T"y8kI {0Function .OnInit
Fq9l1T h0InitPluginsDir
'D4f }(i%W;]!Z0SetOutPath $PLUGINSDIR
(g;Ov9K5oY:r9I Sd0File "G:\Temp\Nsisres\music.mp3"             [说明:源MP3的存放路径] 杭州博客网!y/?(hk[FM&gQ
System::Call msvfw32.dll::MCIWndCreate(i 0, i 0,i 0x0070, t "$PLUGINSDIR\music.mp3") i .r0 杭州博客网}t#[3MY)u
SendMessage $0 0x0465 0 "STR:play repeat" 杭州博客网+\Bldd[
System::Call user32.dll::ShowWindow(i r0, i 0)
k2H2K)u"lOv tS0StrCpy $hmci $0
}3[ C2l!?e:d0Functionend
#[r\y6w0`/K0
1H-B7_Mt Cg0Section
o6hl.Bx)d/V0;add your codes 杭州博客网H \%{.Qk~
SendMessage $hmci 0x0010 0 0 杭州博客网fB*uC9I`"z
Sectionend

2hSYu+DMFuX~0后语:杭州博客网"{6d6S4Yn'gtH

OC)\;W.m%qJ0以上仅是NSIS制作安装包最基本的操作,供初学者入门之用,故云“初级篇”。
)VHkXh)k+Ys.]$mX'_\0希望不会怡笑大方,更希望蓝MM、陈敏毅老大等NSIS高手的中高级教程:)
d r \$U1}d0杭州博客网W.Z%vt1O,X U
相关资料下载[以Pdf2allV5.35d为例,可直接点击下载]杭州博客网 F%A ^ E,P_8v+X?
杭州博客网vn F0hG5_p,nC
  全文的Word文档附在附件中
r5^(R'wY6UqO)Z$[0NSIS.rar
 
偶以Pdf2allV5.35d为例,
2S'J|+kH(k2H0制作了安装包制作动画演示杭州博客网 dh4l$Q(y {

N4T)icX#B1~0JFU0[可直接点击下载]
[M$Q_[7w0杭州博客网W X'V\9k4T9Jth
相关文件列表如下:杭州博客网3ar4Y] P |?*Vd)Br
动画演示 [pdf2all-movie.exe]
G&\%YF'tn&Yt0
!t R]"k"|4o;}B(N0安装包的NSIS脚本代码 [PDF2all-nsis.nsi.txt]
DY/r i UChkH0杭州博客网 a3LcXQ7a ys
成品的安装包 [pdf2all-setup.exe]
r(N)Uc*ubW$E0杭州博客网 xU2Ck[-@$M
常见修改的代码 [code.txt]杭州博客网,e0M0CN.@+h_]o9w4^
杭州博客网6i@!X~ G8M9s
NSIS基础教程CHM版 [NSIS安装制作基础教程(CHM格式)-特别感谢tracky]杭州博客网2W3a/sQq\i5p

GZ9W6L;J#|+NN0感谢chenmy老大提供空间:)杭州博客网.T%N%UN[u hc

r&Hk#C.},`C-b6d!w#x0偶的闪屏图:
"w.E|*Ma `0杭州博客网 rVW;n?2ru
杭州博客网z-zFbi y
附图 杭州博客网0B-B+A.nN!t
附图
 

下面摘引一些论坛的讨论,原帖点击进入
渐现渐隐的代码:杭州博客网dv s`p,{ c
 
以下是代码片段:
Yw5e-d3? [yn+g,{0Function .OnInit
ki-]?.Xx9eU*`0InitPluginsDir
A4@"S'Bp0File /oname=$PLUGINSDIR\splash.bmp c:\test.bmp 杭州博客网\3Q/t2K"@$G#X8b`
advsplash::show 1500 800 600 -1 $PLUGINSDIR\splash
d9@0L OF"aM%zTBy0Functionend

[s+hR|0
杭州博客网_i)e0ic/|r`4@

8LE5^8D(| S?7c0背景音乐(贯穿安装全过程):
)~ b9\&gI2^j8WD0
 
以下是代码片段:
HW0c}`0Function .OnInit
1?dgKW0InitPluginsDir
@)Wq9M&j0v0SetOutPath $PLUGINSDIR
cw[6{8L}N0File "c:\a.mp3" 杭州博客网N5nX$K ]C(`|
System::Call msvfw32.dll::MCIWndCreate(i 0, i 0,i 0x0070, t "$PLUGINSDIR\a.mp3") i .r0
R!]^b\8z$a}%}0SendMessage $0 0x0465 0 "STR:play repeat"
bL O-k7O/P0System::Call user32.dll::ShowWindow(i r0, i 0) 杭州博客网2Yf*D p+_$x8r
StrCpy $hmci $0 杭州博客网R.An9Elry
Functionend 杭州博客网 hQ7W!F8y,F vH
杭州博客网F5^T } Z U
Section
lG|]l o5Z tH-` p0;add your codes 杭州博客网`Lm |/X yv N0^ @
SendMessage $hmci 0x0010 0 0 杭州博客网+E+F5{"sEs` u
Sectionend

su`/vKL J.L0

4Z J \bWNF8wJ0
{K-o~\/E[0背景音乐2:杭州博客网}6JWdf7s
 
以下是代码片段:杭州博客网vB#b)Y5~
Section/Function 杭州博客网#k-X:yqpB)wc
SetOutPath $PLUGINSDIR 杭州博客网'M._T _$]0Pz
File $WINDIR\MEDIA\chimes.wav 杭州博客网O_Ra&a
BgImage::Sound /NOUNLOAD /WAIT "$PLUGINSDIR\chimes.wav"
5x[W S_`7Na0BgImage::Clear /NOUNLOAD 杭州博客网t~ud;y O$Ou6Y P]
Sectionend/Functionend
杭州博客网as4D'C]Tx d'_X+h D
杭州博客网Qx'`"b"`T J)Qo Z
最后一种方法使用了 bgimage 插件,安装程序执行到该插件时会等待 wav 播放完再继续执行。
 
raindy杭州博客网,OR&t!E0v
谢谢dujuan509兄杭州博客网1G P(J+k*q@3ME}
如果闪屏效果[渐隐]+背景音乐[全程]放在一起
%{:R(oX-{d9zQ0那代码该如何修改?杭州博客网 z RB\2d`[W1Lr
偶两者无法兼得  杭州博客网U{u*{6pb;Z3k!L
望不吝赐教 
 
 
以下是代码片段:杭州博客网Wc VT0l&\q6U&^
outfile test.exe 杭州博客网-_ ryY ?YREt
Var hmci
6uj8k3Y-Z U0杭州博客网*z;` Q yC
Function .OnInit 杭州博客网F:AOR1O!b6m
InitPluginsDir
[x2t9XC0SetOutPath $PLUGINSDIR
i F[tO(`,\ P]p0File "c:\a.mp3" 杭州博客网8b{ UuZwqF
System::Call msvfw32.dll::MCIWndCreate(i 0, i 0,i 0x0070, t "$PLUGINSDIR\a.mp3") i .r0 杭州博客网x1PPy;ihXy`K
SendMessage $0 0x0465 0 "STR:play repeat"
2mLzI oEX&a o0System::Call user32.dll::ShowWindow(i r0, i 0) 杭州博客网9[]A"e6q*\%z"qY
StrCpy $hmci $0 杭州博客网"s]5R6M| o
杭州博客网F'lRt3^:I JG8S&PZ
File /oname=$PLUGINSDIR\splash.bmp c:\test.bmp 杭州博客网%v O?A6x&f4g
advsplash::show 1500 800 600 -1 $PLUGINSDIR\splash
Zj1Xy6pP t0杭州博客网+~GeE&[,l^1d v)p
Functionend 杭州博客网xin^"@
杭州博客网\%u jv4k5TJ'i
Section 杭州博客网 f'U'IZ~B?
;add your codes
A[BY[K0sleep 5000
mZs&m%D!d0SendMessage $hmci 0x0010 0 0 杭州博客网 \K%F-p gF1MG%{
Sectionend

 

raindy杭州博客网O0]$E3O0|W
谢谢dujuan509兄
Q2[i kUl-l0已经学会了:)
s.Kr6V5Wm"}0可惜背景音乐只能支持MP3格式杭州博客网2}f5Hr+D%]cq0w
如果能支持midi等就好了 

蓝色网际杭州博客网q3VEd9U^-j6M
MIDI 请参考这个 DEMO
Q/C)y p2u/B0
Oc[ i$}Z |)i L6Ok0附件  
:a;kK h"f0  midi.zip


 蓝色网际
杭州博客网2h!ry4kK_ Z
推荐一个 NSIS 的快速编辑器 - NotePad2。虽然不是 NSIS 专门编辑器不过有时候比 Venis 方便,因为 Venis 不支持文本块操作,而且 Venis 对语法高亮做得不是很好。NotePad2 的语法高亮是根据后缀名来确定的,只要你打开 NSI 文件不用任何设置就会自动语法高亮。杭州博客网2~'N6H*y*FeJ'QZ(x
其实 NotePad2 作为记事本替代者也非常不过,界面非常相似,而 NotePad2 功能强大了好多。杭州博客网7O5q2A8H*wl-W)z @
你可以在 http://foobar.nease.net/nsis/np2.exe 下载我修改的版本,主要补全了 NSIS 语法高亮,原版由于很久没更新 NSIS 的语法高亮代码,所以有一些新增的 NSIS 指令不能高亮显示。杭州博客网i7O eBP
并作了一些优化,做要是让它更像记事本
eZx Q f0杭州博客网 k7c.SNM |(UJ
贴个图:
1b4l[Z2u+~0
+{I-P }p C0附图 杭州博客网.TO;A6g xU#M
附图
dujuan509
杭州博客网;j hoS;d{%u?
引用 (zkdpower @ 2005年01月25日 23时08分)
我想问一下各位,如何把安装页面中的“Setup将安装……”中的Setup改成别的字

`D"Un6K({0你指的是选择安装目录页面的提示文字吧?
o.teZ.q1}?0
)f2z.}d/Q-M0Q0只需在
~.\$r?+X uH!i,["_0

 

 
以下是代码片段:杭州博客网2B)f n`)T$v&y
!insertmacro MUI_PAGE_DIRECTORY 

 

杭州博客网+RI g$a"U8?!IuRc
前面添加一行:杭州博客网:YCCo R&E/CXy9R

 

 
 
以下是代码片段:杭州博客网4C`(R"c9P4Kx*b ['M
!define MUI_DIRECTORYPAGE_TEXT_TOP "你需要的文字"

 

蓝色网际
8v#LN)}GC(ex ]Yt/f0 

引用 (zjj1988101 @ 2005年01月26日 09时49分)
引用 (蓝色网际 @ 2005年01月26日 09时03分)
用 NSIS 2.03 的吧,那个版本简体语言符合我们的习惯。
杭州博客网%_w2`\}4E$]R5|F
请教蓝前辈~
E^.s ^2Zc n0NSIS的闪屏图片的格式支持几种格式?
+R%r.R:z u m*SHj5Q0只支持位图吗?可以支持其他图片格式吗?

 

杭州博客网+{)B{fd |aD?
这个插件支持 JPG、GIF 杭州博客网;^U2Rez7K

5@I9a.wR`b-|0附件   newadvsplash.zip

蓝色网际杭州博客网qc bz7c TmdhJ
 

raindy 有时间的话看看我这个汉化补丁的 NSIS 脚本,然后写一篇教程,嘿嘿,写东西你比较拿手 
1V)W_1a`/A AOE0杭州博客网Ww*u B {v@6k
基本上包括了做补丁包含的大部分情况:杭州博客网"DAf'L*{E/LFN
自动查询原版软件安装目录并包含目录修正
C-p3bo:T0原版软件的备份和恢复,以及汉化补丁的卸载杭州博客网,y2C&T1fdZN-X2[
对原版进行 MD5 校验
'P ES2n)mx&VD~8s0把汉化补丁应用到原版软件不同版本
E0oT:M?Q R(F#b B!qc0注册表的修正,主要是右键菜单
#V4Ya(|J HZh:W,Uy~0数据库的汉化杭州博客网n5B ?:?7pJ4S-M
读取、修改、写入注册表二进制类型数据
'?8O)F{%[x-Q`"Cph'T0
xFv*X~Jo*A R2U0杭州博客网uC(k9|.dd Q
NSIS 做补丁的优点是生成文件比较小,而且还可以包含 N 个版本的补丁 杭州博客网+Vs E;bIB
杭州博客网0PW lBHL ]o
附件  杭州博客网lIR5Up5XM
  hb-acdsee7_pub[1].nsi.zip


7T`X~\FH+J0raindy
杭州博客网l,~-inRkij e jY
引用 (水木鱼 @ 2005年01月27日 17时10分)
请问题头的图标是怎么加的

$J|kRhLW0设置了自定义安装图标就会自动显示的,不需要另外添加,自定义安装图标:
:Z)SY T*~} KA x:z0
(TSx9DeaI-j0

 

 
以下是代码片段:
%sr^T.w J$XJ0!define MUI_ICON "G:\Temp\Nsisres\PDFsetup.ico"

 


*h;]i*FJS-g0
Q0O,}7{k#gp*J0这一点和INNO不同,INNO中则需要在[setup]中设置:

 

 
以下是代码片段:杭州博客网/x%~4?~0|:IeqL
WizardSmallImageFile=G:\软件测试\尝试汉化\安装包\PDF2all\sm.bmp

 

其他需要个性化的地方,建议阅读一下蓝色网际翻译的NSIS帮助文档 杭州博客网 h%M?w5xu+r5u(}
 

zkdpower
杭州博客网/Y/iV5S"y
   请问各位如何改这些杭州博客网^S)TK&Rr&A
第一个就是如何把插入的headerimage图片放到右边(默认是在左边)
3o5@]7N3a8DKdQ;Sp0第二个就是把headerimage上面的字改掉杭州博客网+|5O"js8_'Xx;M#U:V/z
谢谢 杭州博客网9?w+kTM-ji:[

x*{&S W%o0附图
l[;T3\(ZC^1P0附图

dujuan509
p `l)pJ X01、在脚本开头增加一行:

 
以下是代码片段:杭州博客网 X7{7v/g z/umsEy
!define MUI_HEADERIMAGE

 


|"{ay` X?02、在 !insertmacro MUI_PAGE_LICENSE "c:\License.txt"前增加两行:
5a2da:b0cZ0

 

 
以下是代码片段:
q%y,W tz2F0dj0!define MUI_PAGE_HEADER_TEXT 111 杭州博客网Bdj8lh,rj]
!define MUI_PAGE_HEADER_SUBTEXT 222

 


Td mg j A.y6YX.L!f0蓝色网际杭州博客网 b%e _0@*aK.s wQ
你还是先看看 MUI 文档吧,界面的设置都作了说明杭州博客网'm`U4Xph
http://foobar.nease.net/nsis/mui/index.html


  zkdpower
杭州博客网"_X1mL$u$l'?_;E
请问蓝色网际,在你的MUI 文档中有
p2i$}Xa"{:z t9V0“MUI_HEADERIMAGE_RIGHT
1Ssf{u0令本应显示于左边的页眉图像显示于右面(当使用 RTL 语言时, 它将会显示于左边而不显示于右边).”
/lBK2D*p[$k0这么一段话,请问何为RTL语言呢,本人愚拙,望指点 

蓝色网际
:Y-p\+c&H,`m}0RTL 就是 Right to Left,从右到左书写的语言,大概像阿拉伯这样的语言吧。



{1J;Au'OZgt3C0restools
杭州博客网o#B6\5I]D
venis function 向导功能在 NISEdit 上完整实现,晚上或明天放出,不过需要人帮忙把向导脚本编写完整,因为写程序时只是拿了4个具代表性的 function 来作为测试,这是这次放出版本实现的功能。要知道 NSIS 的 funciton 有这么多啊。

 

 

 

以下是代码片段:杭州博客网1LSM [8C}

; NSIS 函数向导文件
Z [\jL)U8H"b0; 脚本解释杭州博客网j+Hra8@:vs9t"L2es
; Textbox(文本框) 如果不写入这项 Texbox 默认使用 参数1(不带引号)杭州博客网?N*F.xb-h[tw2{
; 0:(不显示) 1:(不带引号) 2:(带双引号) 3:(多行显示)杭州博客网%kv+?2]H2oj^t
;
;Zh9R]d)ot0; Checkbox(允许参数按钮) 如果不写入这项 Texbox 默认使用 参数0(必填参数)杭州博客网"i[E2?\(zRm
; 0:(必填参数) 1:(可选择) 2:(将来使用)
#Q"Y}-w5B?4h%|)h-lp9n.q0;杭州博客网&J,{'rjO/x9Y }&w h
; Button(选择参数填充按钮) 如果不写入这项 Button 默认使用 参数0(选择参数)
h}ou E-\p0; 0:(不显示) 1:(浏览选择文件) 2:(浏览选择目录) 3:(选择参数) 4:(选择排序后的参数) 5:(选择可复合参数)
"t3KP-y/d$[$w0; 6:(选择已排序的可复合参数) 7:(可选择目录或文件)杭州博客网6s;hz#N3\j
;杭州博客网6VA1|@{)ts3?n
; 标记: %%LABELS%%    -- 用在 Goto 这类函数中的 标记 参数杭州博客网p'euk,]?*i\
;杭州博客网s4F Lk(D+D2d*m#k iG
; 函数: %%FUNCTIONS%% -- 用在 Call 这类函数中的调用 参数
jB3Zq ]n*[!w2`*P0;杭州博客网 IL,A.il:a1G`
; 以上两个常用变量是会自动检测 NSIS 脚本里面的已有标记和函数的
&_U7nw(g S6t4Q:w0;杭州博客网_*N R%Q%z"u4@[%F
;例子:杭州博客网 W2oj'V@%unI
;[Abort]      -- 函数名字
4dDl)w^5f F0;Help=取消安装,停止执行脚本,并且在状态显示里显示用户信息。 -- 在函数向导对话框中旁边的简明帮助杭州博客网L2f&e6TFM
;NumArgs=1      -- 函数共有几个参数杭州博客网uVB"WV!I.q
;Arg1=用户信息      -- 显示在参数顶上的提示语句杭州博客网t,Thj S*w
;Button1=0      -- 该按钮不显示
2`&auGX0;Checkbox1=0      -- 该参数为必填项杭州博客网 ]m2UFk$lE1NpF
;Textbox1=2      -- 该参数为带双引号的字符串
"S4_T"nJ'a|)r0;杭州博客网[WY(yW
;
$}1u{P&_D0;如果是多行字符例如简明帮助,如果你要强行换行,请用英文的逗号,如果你必须要显示英文的逗号,请用双引号括起整个字符串。杭州博客网%MO&yOq:U(r:p
;Help=""Cancels the install, stops execution of scrīpt, and displays user_message in the status display.""杭州博客网5en S6Si]B*q
;

[Abort]杭州博客网PLk!{%Si0C.A
Help=取消安装,停止执行脚本,并且在状态显示里显示用户信息。
P5A L*jx+eY-A0NumArgs=1杭州博客网0mnj~/`6_4c+ws[]
Arg1=用户信息杭州博客网$wS7JmU#v
Checkbox1=0杭州博客网'DF7^ HnU/c!S0X{
Button1=0
zurmno(G4V0Textbox1=2

[BringToFront]
0^ E gc-W}0Help=使安装程序窗口可见并把它带到其他窗口的最前端。杭州博客网w/X!t(\:b TLGLA
NumArgs=0

[CreateShortCut]杭州博客网5s5wg4w4p~"|e
Help=创建一个指向“目标文件”的快捷方式“快捷文件.lnk”,可以带“参数”参数。杭州博客网5u IQ/z2kBWG7Dt
NumArgs=8杭州博客网Y]*_Y8}Ak0r
Arg1=快捷文件.lnk
@ uj-b_|#m9}3Q0Checkbox1=0
iui"kH;?+H0Button1=0杭州博客网3R3q&d6Xt7O
Textbox1=2
nVgN ~0Arg2=目标文件杭州博客网\}R[h9v
Checkbox2=0
0^5b"z'{)V2qxC0Button2=1
)wISx:o,|+e#hI#@0Textbox2=2
KYK1M{S2kX S0Arg3=参数杭州博客网"P#YY-zN&isP
Checkbox3=1
9AhfA0Nv0Button3=0
*c{P2_~3emh;J0Textbox3=2杭州博客网C,os{%r!L
Arg4=图标文件
.WD]{ kST(x9s R o9@0Checkbox4=1
bIf)O*hS0Button4=1
ow Q:IYHY!q0Textbox4=2
-{ {z8T%C#[UN0Arg5=图标索引号
V sU3Eu~~0Button5=0
D#u [R3p|rO0Checkbox5=1杭州博客网%q|+W h%r4W J{
Textbox5=1杭州博客网4\ Pqv]-C%Wz"W.NG'u
Arg6=启动选项
'~iZ)llB k0Button6=3杭州博客网-E@m8G4wd.|3dd)Y
Checkbox6=1杭州博客网}P&mdi't
Textbox6=1
/H*vB*Z_0Options6=SW_SHOWNORMAL,SW_SHOWMAXIMIZED,SW_SHOWMINIMIZED
tr E*},dh0Arg7=键盘快捷键
{c(v S e/i2U0Button7=0
?5`l?m NX0Checkbox7=1杭州博客网9vEn1Se
Textbox7=2
J(u-}l$u:U9Z9yM0Arg8=描述杭州博客网(`%] aA+_ X3n
Button8=0杭州博客网AK$X e ~qap
Checkbox8=1
}Hc+j{LE0Textbox8=2

[Goto]杭州博客网J$VW#D9_
Help=如果指定了标记,则跳转到“要跳转的标记:”。杭州博客网:|?Y2cb@0E
NumArgs=1
z!X~:TUD0Arg1=要跳转的标记 | +偏移| -偏移| 用户变量(目标)杭州博客网:e|~ E)j2{3N6N AWhf
Textbox1=1
&Q8F*z\6z.Q'vADY8oS0Checkbox1=0
;s%n S.c.u8WHF-aBk:A0Button1=3杭州博客网 b!K Q i Awz"s
Options1=%%LABELS%%

[Call]杭州博客网-t&qn9WE%I^@
Help=调用“函数名”函数。如果在 Uninstall 区段,Call 仅能调用以“un.”开头的函数名。
;`;e"j+U;i0NumArgs=1杭州博客网 ? Ra xN
Arg1=函数名 | :标记名杭州博客网:u'i"e*KuE5J0O
Button1=3
9r.m {F? Q"u;x5K0Checkbox1=0杭州博客网[$E9t:g X
Textbox1=1杭州博客网Ml ~ ~Z0~*}
Options1=%%LABELS%%,%%FUNCTIONS%%

显示效果
-\,C VOD/R0

2.弹出函数编辑窗口:
M ^&M/x$T:gqV u0TCL7`0

3.确定后,输入,这里一提的是,输入时,会自动根据上一行代码的缩进,自动在输入的函数行前面添加前导空格,以减少自己再输入前面的空格。
0~F/vP[rcS,S:hN0

==================杭州博客网;a*l4qbE:xa5Sp
ISS2NSI v1.0a2
R [Om4{0i)kn0==================
y;VXhC$DV0ISS2NSI is a tool for convert Inno Setup scrīpt files into NSIS scrīpt files.
.{-l(g8[8R.U4G0杭州博客网 u7i H-d/|

:_ yK W9Ol0Usage:杭州博客网P%Baz#k;hl:R
==================
$|Z)Zy2[ Fl|0Program:杭州博客网"qD#d&Q3f#cBn
At the command prompt write: iss2nsi issscrīpt.iss [nsiscrīpt.nsi]杭州博客网Un'vo$I9}A
if nsiscrīpt.nsi is no specified then the converted scrīpt will be 杭州博客网s1iC b:Xv
saved with the same name of the issscrīpt.iss but with extension .nsi.杭州博客网o&jABz;x
杭州博客网8c3t B&C;B^
NIS Edit Plugin:杭州博客网$|Mh-}k'cJ ce
1- Close HM NIS Edit.杭州博客网`SnrQ_*I^ L p
2- Put hmne_iss2nsi.dll in the plugins directory
I&@9fI*n h0(Default $PROGRAMFILES\HMSoft\NIS Edit\Plugins)杭州博客网(Hx5^fbUbnK
3- Start HM NIS Edit.杭州博客网'S&Q]MCCx A
4- You will found a new item in the tools menu called "Convert InnoSetup scrīpt".杭州博客网L#}3|1x"G'v

@ q%ii;z,Y3ep9x:]D9V0NOTE: Before compile the converted scrīpt please check it, because
^8@ W6_ai6r0f0complete compatibility is NOT available. I design this tool to convert my杭州博客网J3rs7I!x X
Inno Setup scrīpts and is not tested with more complex scrīpts.
2DO;bV1|GP+X0杭州博客网0~]fhd
The source code is included if you want to contribute to the project
`w|l's0for make the converted scrīpt 100% compatible with the original.
h:^Eb6f'g`/R0Please send my your modifications to ranametal@blistering.net杭州博客网 bV|Jfh8q
Note that this project is a modification to the Inno Setup 3.0.6
(n![~%{F _.f0compiler and modifications to the Inno Setup source files are under 杭州博客网}4xEmw2^toOF
the Inno Setup license (see: src\is-src\is-license.txt). 杭州博客网l y!N Av(eP:{
杭州博客网^/ZM` z2iY Z.n
Note: the files in the src\is-src directory are unmodified Inno Setup 杭州博客网-Q?}&h)vcr[!C2}
source files needed by the Compile.pas unit located in the src directory
l l0wE:}:M0V0
7uBg+?;EF0---------------------------------------------------------
&rIg'\:`"B(UhA:@0hmne_iss2nsi.dll 把这个文件放到 NISEdit 目录下的 Plugins 中就可以使用,没有详细测试,不过如果是针对版本的话, Inno Setup 3.0.6 ,估计应该没问题吧。
3W ` p v6NS~U0ISS2NSI.rar

虽然版本太低,用来从 ISS 的脚本转向学习 NSIS 应该容易点吧。杭州博客网C \y5XOj

ch%jw @0ISS2NSI 源码下载。杭州博客网e\(v1r;W bMr0s

_y)|wk~Ts%VM0没时间去看看它,只是把它编译成了一个DLL。有时间看看它是什么原理。

ISS2NSI_Src.rar

NISEdit 的增强版本,希望有人来帮帮忙,增加一下函数,否则这个版本也强不到哪里去。
l9YLq)X7M}%b'u.e0杭州博客网F1G,C#u`H
把里面的那些文件放入 NISEdit 的目录中,为了区分原版,程序改名为 VNISEdit。
~\@Bt-tU0两个版本可以同时存在,不过你要把 VNISEdit 设为默认编辑器,才可以默认用它来打开。
E _u!Cyqul0杭州博客网[6U9_stxT
修正:杭州博客网 [D Z-|ZN3N
1.添加一种菜单的皮肤。杭州博客网a#S PB}/vd
2.增加 NSIS 函数向导功能。(类似 Venis 中的 function 功能)
kG3]Xpf&jL9r k04.改程序调用帮助时,不要把帮助窗口置顶,因为置顶会令到查看帮助时不能切换会编辑器窗口。

最新功能(区段结构分析)
j5c(^!l] o^0左图是VNISEdit解释的,右图是Venis分析的。分析对象(makensis.nsi)

全景图:试一下呗,分析速度比 Venis 好很多的。基本上感觉不到视图的闪动。线程实时分析,只要改动代码,视图会立刻作出反应。

杭州博客网VEC;dZ'eU^"[
  
K.ZqG2Wa\ a0请问下面那些问题怎样做的,
#X8_2?BC ogM01、怎样控制自定义面的“下一步”按钮的可用与不可用杭州博客网gju {D!}{$cK
2、怎样为自定义页面上的组件添加Change事件呢杭州博客网fvnAfPNm6@
3、我在这个网站里下载的foobar汉化增强版的安装文件里看到页面“MUI_PAGE_COMPONENTS”是怎么做到的,就是怎么把那个页面的左边改为能显示描述内容和隐蔽一些文本


colonel

 

蓝色网际
oR_-g.|M0
对于控制下一步按钮来说,有三个阶段分别是:页面初始化之前、页面初始化时、页面要关闭时。不同的阶段对应的插入函数不同。
5bK_I0W @1Y0
6i%d&FNT h r0比如要在页面初始化之前禁止下一步按钮,MUI 界面可以这样
%x/],gWtC ze0杭州博客网 H4|A7D x+I`-Y
 

 

以下是代码片段:
d;YzM C h0!define MUI_PAGE_CUSTOMFUNCTION_PRE ComponentPre 杭州博客网4raw$A1ZB!h&l:E!P
!insertmacro MUI_PAGE_COMPONENTS 杭州博客网R9vN0ZP'V&Th U

/G z!z'Y%U(L B hs0Function ComponentPre
d+a*Y+pZ a0GetDlgItem $0 $HWNDPARENT 1 
0pnS(t@3a0EnableWindow $0 0
OG/@}#n3z0FunctionEnd 

 

colonel杭州博客网6~%yo3@Z(_"LX(m
那“2、怎样为自定义页面上的组件添加Change事件呢”,我自定义了一个配置页面,我想用户在完成配置才可激活“下一步”按钮,这个怎么做的呢

蓝色网际杭州博客网S#zk Z3x*s@
需要给控件加上 NOTIFY 的标记。杭州博客网3R:]6\)Z)^hU,Z7[
例子在我的签名里有。杭州博客网+vQ!T v%Dt%s y2} M DF

/z#bRHS mbei0需要先了解 GetDlgItem 和 EnableWindow 指令的作用。

colonel
a;R t$BeGH0
这个问题呢杭州博客网A2oZH'H#BWm1d%D
3、我在这个网站里下载的foobar汉化增强版的安装文件里看到页面“MUI_PAGE_COMPONENTS”是怎么做到的,就是怎么把那个页面的左边改为能显示描述内容和隐蔽一些文本
g GWw!]:R4R c0怎样使“MUI_PAGE_COMPONENTS”中的树目录只能在点选复选框才被选中呢

蓝色网际杭州博客网|%e|2hF#BU6bQ S
这个用 Resource Hacker 调整一下控件就行了。默认的 UI 文件是 NSIS\Contrib\UIs\modern.exe
1S8Ctb0`%jU0到我的签名里下一个特别版的 makensis.exe。

colonel
z2d:l,k#]j$\j8O0
我不想在组件选择页面中用 onMouseOverSection 来显示 描述 ,如果架设函数可以增加的话,我就想到这个 “回调 onMouseDownSection ”
`^+?/m5J6xt8O0杭州博客网%]A K~$a E)]O+U JH L
我是想通过组件目录里的 OnChange 事件来显示
kk zn$`-pv_5D&['z]0杭州博客网m3NiRi
我不懂VC++吖,如果我会的话就可以像MM你那样去改它的代码了

蓝色网际
,io&yXS1f F}$@&~0
特别版的就是这样啊,当你点击组件的时候描述区域才会显示或改变。
Q3N!I(^N)qOj(d Y0普通版的只要鼠标移上去就显示了。你没试过吗。

colonel杭州博客网rD.P#I)Kw1s7M:}
哦~~~~~~~试到了,原来你是改了onMouseOverSection 回调,对啦,MM你有没有做过 组件的OnChange 事件吗?主要是用在自定义页面上的
8^,~,jh/U0杭州博客网 |[1e*](n^ ?
是用这个吗?Call shell32.dll::SHChangeNotify

蓝色网际杭州博客网9Co ]2vwv1vW
不知道你说的“组件的 OnChange 事件”是什么意思。杭州博客网3R:Mq0wB0Q,|,R|
是不是当组件选择更改的时候调用的函数呢?如果是的话那直接使用 Function .onSelChange 就行了。


wq99杭州博客网5v:Rr {'b,Z0N8{
各位好:我是新手,杭州博客网S,KL5xZ _.k
我在看function时,没发现参数的传入。
S;Zb6QZ1E t0可能我的思维方式不对。
YT-Xz+k3pz0function Fname杭州博客网D9GBli;[8VC
functionend
*?6@mim;k,eF}0参数应该怎么传呢?

蓝色网际杭州博客网@D H%ewut_
NSIS 的函数其实是个假函数,并不能像 C++ 那样传递参数,如果你需要传递参数请使用堆栈。杭州博客网,JO yT"?YGZ
一个典型的例子请看附录的 Get parent directory。 

那如果一个Edit里的内容发生变化,另一个组件也跟关变化,这个Edit 的Change事件去写呢
/_3z~z%u$B'o0
^bK6v4T0PS:可能我习惯于使用delphi所以有时说到的组件事件名称与你不一样吧 


colonel
;IQ9` Q&foD2\0 
那如果一个Edit里的内容发生变化,另一个组件也跟关变化,这个Edit 的Change事件去写呢杭州博客网D {{3oWS1|
 杭州博客网f8x,b0?;y&oP
 PS:可能我习惯于使用delphi所以有时说到的组件事件名称与你不一样吧

蓝色网际
xk4D L!x k H0w0你可以参考一下 NSIS\Contrib\InstallOptions\testnotify.nsi


wq99
&H8rQ&{:F0
File "${LOCATION}\$R0"
8Y` JQ$A*I@GY'Z0$R0是一个文件,结果杭州博客网9^%A^:F1fO
说没有这个文件,
z`5VVXy5]0File "${LOCATION}\123.exe"
}@f.fz0那就可以了。
}:|A_6n @#C;o0
W,v]^-P)u0奇怪,我第一句写错了么?杭州博客网O3y ZP&BJL&k8S&S
File "${LOCATION}\${R0}"这样也不对。

蓝色网际杭州博客网8Er8yfk@,Z
你可以先在资源管理器里看看是否有 $R0 这个文件。一般来说很少有这种不带扩展名的奇怪文件,况且不带扩展名的话很容易被当作目录来处理。
,H#CZ/kn&Q0杭州博客网^I/^s;x0f_8m
一般来说编译器的报告是正确的,这里有一个测试脚本,你可以试试看。
'D}g7X)YWI U0test.zip

wq99
?,m|gmkOJ6g ^R0
啊~对不起啊,我没说仔细。杭州博客网*O%aZL {vg1b
杭州博客网_Cz2V"f}%E fCr
$R0是变量,是从堆栈里Pop出来的。杭州博客网HmJ&`X2O:i
即123.exe.杭州博客网\0c_L9~2~0|m)U
File "${LOCATION}\$R0"
8z @1pmO0即File "${LOCATION}\123.exe"
n'En0O)P0杭州博客网"KP'Ea;h$D5R{#Q
 

以下是代码片段:杭州博客网9\td+[D^
Push "123.exe" 杭州博客网m*@)c]f"H
…… 杭州博客网w W ~*]-sJ$X:u m
Function InstallOne
O+br:F*gPD#{#zv?0Pop $R0 杭州博客网"l%i/v2wi/~Ye:x'Y
DetailPrint $R0 杭州博客网,g7?5]lV-\hL5@
SetOutPath "$INSTDIR"
J;[0t0['xh6T0File "${LOCATION}\$R0" 杭州博客网.fE e ]0~!]P@IO a
ExecWait ’"$INSTDIR\$R0"’
T2x4U#H\]FC0FunctionEnd

Q%jx} ~U&dH0
5G7J%f^%BAQ0DetailPrint $R0杭州博客网,`a0DK1]-s
是可以打印出 123.exe杭州博客网Toj RM
改成File "${LOCATION}\123.exe"是可以的。
9Z+lX9a6CZ^ ]IXf,vX0怎么用$R0就不行了呢?

 

蓝色网际杭州博客网+BdD](Q+Q(?
File 指令后面的文件必须是编译时当前系统存在的文件,而 $R0 要在编译后才有值当然会出错。变量是运行时才有效的。杭州博客网-E"@Na4e"K8x/Z
如果你想改名的话请使用 File "/oname=目标文件" "本地文件"杭州博客网5?`V7NQ6_]'t
oname= 后面的目标文件可以用变量。  


arthur810杭州博客网 L:th*K C#sD/S
为什么我的“安装程序语言”里面是空的
6|$Z;pI)k*P0z'q"]0如图,请指教,谢谢杭州博客网:I+m'g{O`
注:WinXP SP2简体中文系统 杭州博客网 B-G {4r:@W

zhp0083杭州博客网6?8m|.KZ
手动指定一次就会有了
j8a*A]4a qk;x&K0 

以下是代码片段:
'`/ec o)US0!insertmacro MUI_LANGUAGE "SimpChinese" 


G6]Qv]2N0sjhome
)cX"TK)Z0请问NSIS只能添加一个目录下的文件,怎么样能添加所以目录下的文件呢?怎么设置呢?多谢!杭州博客网-w2DJ M.kIC%c%sz#\
如图所示.
?0g#A O9GF0|gw e {0只能添加"Counter-Strike Source"目录下的文件,怎么样能添加"Counter-Strike Source下的bin文件,config文件及所以文件夹"呢?

 

蓝色网际杭州博客网1nK sY'l-h3s9y
File 可以使用 /r 或 /x 。

<转>


相关阅读:

TAG: nsis nsis使用 nsis教程 学习

引用 删除 Guest   /   2006-09-29 11:03:16
 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2009-07-04  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 25536
  • 日志数: 197
  • 图片数: 13
  • 书签数: 10
  • 建立时间: 2006-08-29
  • 更新时间: 2008-10-27

RSS订阅

Open Toolbar