From 773eb66a9783668c434ab2769ff0b374bd5d314e Mon Sep 17 00:00:00 2001 From: Mathieu Albinet Date: Sat, 10 Sep 2011 11:51:25 +0100 Subject: [PATCH] Add Windows Installer (NSIS) \bin : where all the viking+gtk binaries (exe, dll, ...) go (it's exactly what will be copied to your installation directory) \pixmaps : contains only a viking icon in .ico format (we can add also a banner in the installer) \translations : at the moment it contains two files: english.nsh and french.nsh, that translates the installer UI (we should ask for more translations) langmacros.nsh : macro file that deal withe the translations of the UI viking-installer.nsi : the installer script, heavily modified/simplified from the pidgin installer (has to be compiled with a recent release of NSIS) Further information on the installer see: http://nsis.sourceforge.net/ Signed-off-by: Rob Norris --- win32/README | 6 +- win32/installer/bin/.gitignore | 6 + win32/installer/langmacros.nsh | 66 +++ win32/installer/pixmaps/viking_icon.ico | Bin 0 -> 29926 bytes win32/installer/translations/english.nsh | 42 ++ win32/installer/translations/french.nsh | 43 ++ win32/installer/viking-installer.nsi | 553 +++++++++++++++++++++++ 7 files changed, 715 insertions(+), 1 deletion(-) create mode 100644 win32/installer/bin/.gitignore create mode 100644 win32/installer/langmacros.nsh create mode 100644 win32/installer/pixmaps/viking_icon.ico create mode 100644 win32/installer/translations/english.nsh create mode 100644 win32/installer/translations/french.nsh create mode 100644 win32/installer/viking-installer.nsi diff --git a/win32/README b/win32/README index e2b1a69b..10942681 100644 --- a/win32/README +++ b/win32/README @@ -1,4 +1,8 @@ -I don't think you need to use this anymore (just use the regular makefile), but I'm leaving it in so I know how to compile Viking on Windows ;) +Files of this directory are probably not needed anymore (just use the regular makefile), +but are left as reference for the old compile method on Windows ;) + +However the installer directory is used for the named purpose. +Instructions on how to use the installer will follow in due course (probably on the Wiki first). ---- If your GTK path isn't c:\gtk and/or your mingw path isn't c:\mingw, you will have to edit the scripts to compile. diff --git a/win32/installer/bin/.gitignore b/win32/installer/bin/.gitignore new file mode 100644 index 00000000..93aad366 --- /dev/null +++ b/win32/installer/bin/.gitignore @@ -0,0 +1,6 @@ +# This directory is delibrately 'empty' +# It possibly could be created by the installation but ATM it's not. +# +# This where all the viking+gtk binaries (exe, dll, ...) go (it's exactly what will be copied to your installation directory) +* +!.gitignore diff --git a/win32/installer/langmacros.nsh b/win32/installer/langmacros.nsh new file mode 100644 index 00000000..509d1e70 --- /dev/null +++ b/win32/installer/langmacros.nsh @@ -0,0 +1,66 @@ +;; +;; Windows Viking NSIS installer language macros +;; Based on Win32 Pidgin installer + +!macro VIKING_MACRO_DEFAULT_STRING LABEL VALUE + !ifndef "${LABEL}" + !define "${LABEL}" "${VALUE}" + !ifdef INSERT_DEFAULT + !warning "${LANG} lang file missing ${LABEL}, using default..." + !endif + !endif +!macroend + +!macro VIKING_MACRO_LANGSTRING_INSERT LABEL LANG + LangString "${LABEL}" "${LANG_${LANG}}" "${${LABEL}}" + !undef "${LABEL}" +!macroend + +!macro VIKING_MACRO_LANGUAGEFILE_BEGIN LANG + !define CUR_LANG "${LANG}" +!macroend + +!macro VIKING_MACRO_LANGUAGEFILE_END + !define INSERT_DEFAULT + !include "${VIKING_DEFAULT_LANGFILE}" + !undef INSERT_DEFAULT + + ; Viking Language file Version 3 + ; String labels should match those from the default language file. + + ; Startup checks + !insertmacro VIKING_MACRO_LANGSTRING_INSERT INSTALLER_IS_RUNNING ${CUR_LANG} + !insertmacro VIKING_MACRO_LANGSTRING_INSERT VIKING_IS_RUNNING ${CUR_LANG} + + ; License Page + !insertmacro VIKING_MACRO_LANGSTRING_INSERT VIKING_LICENSE_BUTTON ${CUR_LANG} + !insertmacro VIKING_MACRO_LANGSTRING_INSERT VIKING_LICENSE_BOTTOM_TEXT ${CUR_LANG} + + ; Components Page + !insertmacro VIKING_MACRO_LANGSTRING_INSERT VIKING_SECTION_TITLE ${CUR_LANG} + !insertmacro VIKING_MACRO_LANGSTRING_INSERT VIKING_SHORTCUTS_SECTION_TITLE ${CUR_LANG} + !insertmacro VIKING_MACRO_LANGSTRING_INSERT VIKING_DESKTOP_SHORTCUT_SECTION_TITLE ${CUR_LANG} + !insertmacro VIKING_MACRO_LANGSTRING_INSERT VIKING_STARTMENU_SHORTCUT_SECTION_TITLE ${CUR_LANG} + !insertmacro VIKING_MACRO_LANGSTRING_INSERT VIKING_SECTION_DESCRIPTION ${CUR_LANG} + !insertmacro VIKING_MACRO_LANGSTRING_INSERT VIKING_SHORTCUTS_SECTION_DESCRIPTION ${CUR_LANG} + !insertmacro VIKING_MACRO_LANGSTRING_INSERT VIKING_DESKTOP_SHORTCUT_DESC ${CUR_LANG} + !insertmacro VIKING_MACRO_LANGSTRING_INSERT VIKING_STARTMENU_SHORTCUT_DESC ${CUR_LANG} + + ; Installer Finish Page + !insertmacro VIKING_MACRO_LANGSTRING_INSERT VIKING_FINISH_VISIT_WEB_SITE ${CUR_LANG} + + ; Viking Section Prompts and Texts + !insertmacro VIKING_MACRO_LANGSTRING_INSERT VIKING_PROMPT_CONTINUE_WITHOUT_UNINSTALL ${CUR_LANG} + + ; Uninstall Section Prompts + !insertmacro VIKING_MACRO_LANGSTRING_INSERT un.VIKING_UNINSTALL_ERROR_1 ${CUR_LANG} + !insertmacro VIKING_MACRO_LANGSTRING_INSERT un.VIKING_UNINSTALL_ERROR_2 ${CUR_LANG} + + !undef CUR_LANG +!macroend + +!macro VIKING_MACRO_INCLUDE_LANGFILE LANG FILE + !insertmacro VIKING_MACRO_LANGUAGEFILE_BEGIN "${LANG}" + !include "${FILE}" + !insertmacro VIKING_MACRO_LANGUAGEFILE_END +!macroend diff --git a/win32/installer/pixmaps/viking_icon.ico b/win32/installer/pixmaps/viking_icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..50e8b007003c67a233e2094762903ba916384f3b GIT binary patch literal 29926 zcmeHv2Uu3uw(W{tq^Kxj1;LI51VIGFf>NYOFM`rRP?Qcf1OWx<9kHRJU_nu_V2`m! zO=2vGMpKP3v7}m=Z_EW4{^osUAsYL)+^;D@+6YmFb4~YaiWMD&P#)8AzoyuV_Y_ZPxgYxjg_vM3 z#1NDjrvzSua^N9YlH|Yt_Me<59|+&s{l(l8H&M7?vPfLCKxoY9E%N4Si?Z_BV)M53 zqNu1q?ApCc1fJX|Zrr#bPM$m|9zA;W*M})%U*+~spZU*0B@WeW)DL{Dw0ZF0;TKOI zd*L`ZPW%1Sv%ZZCjtjYH8det>9O>8R{W)8(@3-vY`7KfLu|W&^Oeh?io*d+Fc%@8# zMPyK*;jXe3VjSWWDV%UYoma#}#aen%8t8UZn_e7kzOY{gcEi zE|V+&jpMu?*T8Bf#N+1sxSh~7LKkaGJ89zjcP+UuE{gnue6g;`UQ`736t{2R77js{ zVuFW;ICbij@Xd7+QPt^U@sb2lxoV!66FOYvRTPV*clN#Oal$?I^=^I>+ z3u;)iPdxm3W5IZ%xS)X!m={0dUUS5u~mno{IM3G1j}HwK$G72|e`Jm5;T5y&f0#xQ@i#_eeZ$P2#0W z%QH#N2TibjNN*Ry?gfxuObf- zwkun#$Xp>RVyB9^i+x1hzP%#t`{VC=+}}9XHo2*BT28w+_@NDXY1`JNZQIPCvY@76 z)7B+5HPyX7fxDm2x@$Ew)Qu>sPACrJ8(g#+f`Y;hR+rr@;eD6n`sj-nEkdhnYN~@^ z4BT}B%*|~sTGe2Q-6z^62b<%7xp~d=vhrd-(H5uW{<@l)@-1Nw?)!PbV6}c;jRzz- z?v?xI!PZn$UK6x0GrH+~Z1fY1yW)^ca||jRi;bpU7;k@t=kcsBpw)- z;ebJ0Tx@LUj@VroZ)HuRGB&8b?3$+BFW~dRK@B^uIbf(&ml^9%v51Qe8~BjNr`T6MpFHI9xtEb?$@NswPs%MF-N?tDfkC=^CCD7E=G zj>5)j4N1n_;^WQp(ZOYfmJX(v)(9LeDJu(-rWrG9g;qltrdrs+vhtEGINtOEJftBg z_{^f9pwQ~FlIrrZ;xPGQmt>uwi@cl(t}d&t!Ev6BvT*V+{wXiVq^vFpI)LLY$qnJJ zkMm@$!3!LkFK<3`zGg#pS$SD3UeMN22M5DX+3-E*p4XPwlvi`jT$1;nI&~)e;wc-P zIaOO*{=6J77y>g8e$nQ1u(>(T#$Bwfttl(V3+izEqWP(~pi?+u5p>avo@17C%^d4b zoidLNhEK7v2wH?ORtc8v$n!#x-r1vqR_0b7Gn@tM{2AYAYBlQB;4^=D8{Hq2$W!(hi@ zW^la4bm91jijvPUa34PWy1J~u7}uNgYlG@m>{ugx>BIYY5G)y*DHxa6r9SlGVcTTC z$_h#<49=X14SH>taQth2t5s7=*QGX33LIyH$0p9)W?DnD6P9MJ`2>#R>91!a-|&;X z9*2jxG(V>KhTFGnE}m{^7}E0e<`RAX;KAn&Zyko=y!+56JF`J+MXJN=r|=ER4`D&? z@?ZanrOD!P?8nQyw<%4>8xaohbx#o*@b+%=_PAJz{g>}0$?aVf#ti#O&0B1Ezmc~Z zLcDC=!hXXFBYu2y+a7Tz@3(9@&gA{Kx6Lsr3^QUDEG=7HC--r`+~WCii}$x|j|(i= ze|vkk`8aPiah}UHpPIHyvE}k|`=I>q@fP)IE!zvFmD?ogL+FUAb z-n=Q2|7Z|r&z==-R)##@#mv%G!X$H+Fb*6n+E3~z@?6@AW6N|!TxfscYuirv7PyLZ zhxTIX)TyHTj2>dmoWY`aV}N|ex%216_3PKgu3fvtK>tZ1CC^f<^HmW_R-I*x_u|D1 z;ZnU&cspr`jK$%?`(UETp3zF&y?a*}+IJS4q6dp>>m5X5vXeM|{J41Xm@L_S`!UZw+SgqK$ZJX$>)m!}h^Uva=!YQI^ZXeOtrI)C$uNTv562(HVF2W3U zcvO+MxO3-@P#vQslq^+5nYWU-lxHRq;`Bt~!bGuZ)hcoM@@286qCy<0a6nl*i*EKk zWDFV+6D?c{+~J>l3(xSOqB>)OSnjSUmV~=u*|(8x)6b@}DDYPosg=I6A6)D$ z#4o@6BHJ}SVYEnIF-4U5D2wh>RmA++He%kqc|xx+SUAp55-|aN#l!>g!p6o%46*Da zYGQT8jdDxb)^SM-#ryBSFQN|Ah(G@LLo8puT%@I?iNxc(g{P;d`0&FIMOOZN@!bx8 zv1!prp*?+!m~B5wWIMJIo0AO0jF7=%x?6W)w0)k~y?wJBgI%q=h@{!w#k#`jVn~>k z$jQkOzy0=`$Sp3A&nw;%A=dkM6FnSz3KvfovBIvEh%0sx^IR20bkuNhEOm@1^HLBU zrYH#gpkYEM!&Nw~%N55@92Zd$p~7~Ct;l_FQT+b<@5293m2h-)6hHm+lQ2KLLVWer zSMQoK|34mU75bN2m5epo$p>1coDFQ<-*>vF`Lr@5WUbn_o>LlPQ`@yF^T-G9i*|~0 zRThnCvv1g>GvPt&1KI|6Ozx%LJ+89NaO0Urx3Bh7UU_K$l5|V=+yS#YMRhP4rxiOe zu}@9iWD8fN@-F_`vwZqSs~*<%%9^pN-^t=r*@c7i)}_X)CB*C*we-D+F+(*cj$XJe z-)iF&m+A&@r`{D}*Ba-Z_Tvw3G8@!wZ$^%OSmd$YN%d*gJvOg6F>mqK`C`b_Eo=4M z4oq;^pkUaJi@&UMft`-W@f}5{o3lv`(~*t~Y?m9f<+IZEN_(3AUx80F+1ZKBZ;~%~ z;~&N+*sijzWgE+OQemp1DDzhnXETf?W@9kVPDD8>iPF+i;ZPPX3f@MKqJ~HtQdzk{tX;cS#Kw#iY@3cP zHxL!GRYjzmzOW877uT*`6Xt6d2(NW{Vw$yu$ji-?^;wvhAik_}5&L2X3bt_r9lDD> zd-jN8uTElW!$R@(*I!G!Z#LUmoH%hpRE6{qy{wfnXO)D>&M4u&vqF6F#TVk~)2Cv` zjvXS+p@Z16Ws5j;=#V&i^r-mgqmRVK+-YLP4=2T$GiOA|?TuoEYezBB)=4BP&BRY%iB}u!P??S{)|s;BfyTqW$EKVy$l%aUw-eY}&L*EL>%Dt`R&M=_>k zf%Kc~^SOW6XYri*vNl{CS~N_y#SkYw@xu>4NPiFnjE>`o$$r|>pNEBoi7lb(LK*&s z;|<5<(}c&aaZ)!{<1dU*bPv29x&o$SJIj|8sT zGTG(qCwAhyJv}^?Q&uJ=B`N=|W9aum>`?XX%eB@Y?-+5&rqbD|Z{NO^DNFo^=bYOT z>*}I=KiXvJH@iQz{?H(O_ilrBD~F6cQyN>kT|uj3w+W7pA)TWJ4XAK5SiNM_$UmN~ zTJ`XRR<}nB23W4Ue$3Ev(SSi?Lj5nlcjjE+P+OJoM+Yps?)})bu5Mm!)Q1CCw$IDU z@w1(j^~<9JRaNt^{+ed0c|Gc&wNuKn_xzNW!q)V^^wW?a)rI-_{pjAHF)P}ArFYw* z<_-8^cc&f&o1>eJef+Jd z#@ecBb(RChPgv6}IhxyEF1Vxr_xASJmTpZo@!9!?Yk;}z^Yz9TFTP0pMPH^dEqA{{8#KoZOW{KQ~b5JHURqn2I&CJBuT* zIor2y7bc;uqO7_~R99Dvom<1iiuiFtWqMaJ!>yY*efqR;D+KO)v{H;W)sZnZ=PIc) zI*5GNcJh2@eKp~5dWG;pKElt7g1zkmTe&W7n7B}AA?-?KWu-7o^boPJvEpQ^fmk2V zRm^uY6n&kBit!sGgjH3B7;Q2_oI7_~mk?qn>`p?iq)xvqD4W55a*g16; zU6BXnMGq6(3oHe<=bi)m#Qd1i;>$0;6gA6@M8T}CG9S@$?IlKMc?$RZH0l4C1Dd(9 zNQ~P)R}AnSEMwnI!H6?5jbXbN%JOk6J{>XqjWP?d1G$OX40RE~xl74h5pijYsIA*A zl9Q7~iKl|J)7-|K8$EmWOynU(So!Rx3 z>WXEa#km6eb^rP*F?C&l><8VDaiZ@u1yMV{pU5b55_WcWV$q^S!a8b+oLc)&^O`X;j+G*Cv!e{dW8{U1~uUn zY%d1Q8Xyd-Lxs!6LQz{=E8`2NtYsoEZ?4d`R+8~Ss&^NWmpWehqWPg(avZH#u|gDA zxQU7dCZda_vaq!6B>UPf)k@4cuvOI6)rlOZwvt2h*jb94yS4PE@3KvQ|5%$=%cPHb z=ap@WcjRndq5Sb*uW0>At5&T(!LdihI*wFxb5?T&KE0xI`1T~@{oj5YJn8C^vrP|Jc4pYQvdxQ#%83@OFh=XP z)d>D}!lc|a@&T>R3|s1$LFI@Xu3jxCGbg9E#u`1_R!zF9!w*=t=1SQg%-i?Yim5oNav9# z-qG%l8vVTF2g65>)+Tr7$`kKG=hyn6VS3oBQzUOnQY zU(UH$%j_jTWnx_Yd5 z?=hp{oh@s7{Wh>qpFXvgH#_{kYDi&$d)WQ3FsBKV?yl)^dHf;MLq7$@b^R>3##( z2mJQFZ()AgGv^TZ`nIF49`12Fz%=5kplQ2zKknGE<5vSuI{f}qVM_ip_3xgoQ<*R+ z{rRqlty>>|Gk5Nc6RNRW?FW8#(rcx6(R=yMVeT9E1W)Ss{NPqq)z90vpW!`qs%q?s zUegR_-dw%BC~bM#vvp2AjlN%aaB5v&ZGZnSO-%awwx4^T>t_!JcK)R(rQrGpx@HUa zKC(F2;Jy9fLw^N@`3=4^<{p?9*Xx0+Z&6|Db=@P+5f=t_iFx|;q0g;b#}yPzwzog9 zJ7|DIhj|GF>QAqo?olE{;FG={Pdz+*Vq%UfG-z*sJaFIuhk5fRsjF|hcG?Z+??gWN zW$@s^dN&MjDa;=;W^9MECj zB@M5( z@Z3@S#@+HAchq2heng2%N*)zIdeky+|l)h{PVwG+diqaOcAG8b85oI$KW$t-k$!KwW_Z;afI4+sGd!;Z!?xx`} zNcdR|5~~BcOCOtAS}d`yxpU`=O)-N-SKDqPY=)xrg8`qGiUnc*5`#N}T)1lM0*P~S zP6?htxK}QaIqSB$ePte(=iE+oG43wHKiDPnvRIEkGC!}49w2=x*cVZcd)dZs@b4;y zn=1(|_$s3v3xxZoLg61UODtWwR5+BR2!mX2S+6pmuEHkO{*5?=G zI||)92)F!Tk^G=3r{%o<^a?}d%cEti#h8ZEDhFY@E=a~}Tj!`F2JS7#5n~)2+u1~W zh!rO`il|ao8T;_KWc)GxkF#RHY#rGSoO`marx);`>agC@r#q%w3+G&C!DE%ltM8#ahdz#lpyZs)w-1hK2jwo(zl zC{dQ%3wVeA#!xZBuCt8cCwotq@q2uHyl|MIEdO?TKS#_*?#`IiB=?@OJuDYRh&bTF zX=pQDt4?BKSp@KjbTNPad|_&4EIi@sjH_cMR?u-uCs7&LUB>lCjvSFOm!H4CsEgJX zJrM_m`1Tet=j+9|F@40%a!a(cn~eLpEiMYkZ+8a|8UOH8 zGlo)Ka&k`nKXylk&XMF*UUTPaY@v7Ga0pX_mqT2DLqqo`zxpB4-27hT56L?Jwn!O6 zhw9YVFIcdkzFueO&i_bB44nn>IgQCnmbFI!*?!rQxUoa{_w-#s7-^;`<^s&>DH~=xNa_=bjJ&p{8@tx9m3VCG=3<$ z5gGY7(mXQqM$z0I-;C>aY23K`*BtN57kqf6r3M)~@pZ{7G`8PBQ<$HT|KX2sz%qE= zzjpuH-A~53=$$!JG^+UpXynEvn+6x*>NCHo*<(@r?aaM1-$X~>y^HJbkBjcsjcX7X zFIyQ;Z(O!=d!+fj-|Ue{G%cm}zd7>t(W=p^s^6-1>xL%UerKrcl=#L`Npo>|>7qq* zM+ zZHE`^zhmcf!(0uQRrKo^fk?HYV%M&S2;35ruBmzJ*N?v+X>!-(@+B9%fCt5qQHBm( z)G8_#FRmEdF$P)MVk{LE5%Y%+57&JE{a-)!`1Sj{mUzKl^x3HW;?6pS8~26-VN;4p znfb*$B_;f?G%xPv*nY$3^Yynr{`l^CHrl%N;ILl~81tgY$;ZL1J(lXFq}Ufm49L$fFaPzH2TF7~ z`qIfWz3*6EQ9FoBo+uip8mFcz_BlOz^yp#3ep&i~-qV|L72)~$@9_&fMvlB3?YZ}! z!<|+(0mGg=Iej|30~SR;EVyIXFV+5feRFRvj@T(*fLFBpJUZIZ{QUk_{R2*)_EYiu za@w?M*4mYoDk^@89lqGRwEBa-xgF;(Zd1lD_;sYFZFIEfj-T%ASDtuErBX%v%Qn{5 z+Q&8=J62iwWrq%Xjk{NWp!f3^F%@xm!JfPzOvfTi^Zi+R1x1 zP1koicm2e1x%^R^eIo4n`WI-SFS;K(E4!eu*8=ew7(2T^XSRq z-!m_YQbzf&w`yu0U7X`oEoO%(Z**<7XolaL?n(R5QKRdgZ!2n?D zp`p{WL)uKn4Nrz`H7ZuJ|IPfdLei)@8Y&IppVuFqjW_W1zlWu1Yx`k*ZoObs9H(aP zyB(Lu>$DhVc?Z7$Z+K*I0@o+Ld{L=#T0UO)p6Lw*!%>Y#{(8CK8gQkjoV%W#o%rII ziXSfTp{v&AI|rY@cU<0lL#Ix&&h_jW5T1|_UJ#(x-}Jlj3O~KNQ@8)^r*oO)8#;Az z8Z&0%#IGjyx9NZ7ikr_*AC0TKT3K0r^piVZz5mUYX=wdy%WD@IBygXF~I_5IAKTv@%i9XhcC9^ds~f1pNp> zd(jANw-(%GN4_5zXlvl~gMd{;LQixa`jnT*4?*ul(BcsE zPy{U#L4QNg&Jc7C44R@ppamo7t_Zpxg2s!W&m!oHu3>yd;obo}-de_O z%NEDlK*!b_^TQUpu2ksE_CT|B0@|QTXpN$wXEH@j*|p`JE%&{-jqMY-`)>cp^SD2_Kfy<}V|&6YKkNDP=WV&1{5SVGFb*G2FVCux2D(?r zj2Uwtz(=JNUWKleEW}=)(4p?I8M6m+c!cu@TT*XtP}eUNY0(dB$G0jU%(& zU+S*$CAN{BWi8EzrJ@M_#J* zFJ843WLg^~eGD+v5^i_)Ga<8_>ndg`HL|aP_JsyHs!4w{Yo;0jKa)OZt#4QIaB1>8 z4tAX=FvC*%p3KkAQD{}U^gq7a*N|mhy7WQ1y1G~KZJY_lOK^#eM4e`Osu6f|(zQ{hOfO~1`(YPB14GcikpH>@^4?HD z(9IC^KGauR<425fZ}xLp0lMFTpC$Hn(}M>QbUV`D6-5o9y|II&&#RfIL6batOTVXK z(}hyq6qo z9p+Uooc2w^lCiWn*;M)%XpjgxAi9ucO5lpgJ#sV+4b&mcnc4(wmj>E*BXuifT7Yrp zU%QY}Uo=qIoobq15dP9TGUyoi#gS~gczm)ShSupaG)Kg~I5yjc&XqU$rspr$r;vHWsJ~Z#g0_o*u@i7-QZw!G zFfcH1HFQ?tc>YslnD~mUEE;%rPcA#J94EjIPp;lxoyW04^5#HVvEE0<3oEm&Xkqer z88hsN8Ay}7`^vbX?{pPXp49m%#|{`DA#A%jet?ZsM-1HQP5aDo1bn;(bOjC^OF%RB z_{SZd#PP(Dd~+&F9xG#t%?mU!Kh$Mhk?5rQyQ7oMevU1m*DwU9rpmUUrOa<{Ve0^F zJkUZpY-@LHOWRW#`{9*RyFV`FjHi<+dQ=}bkf0HvGT)xhBAj(U3keEXk8;o9XR}>r z`~LPb-`>Y~>d3JSZ1*_$(%Br(WTz%#zpB6aojkrc76XQB0S+^aV=3T-<~*j~oZtUU zTkw56AGkg(EAPMgJgy_hEF2?&M{|vch{!|Cw14vC$wz>kCu2?wYq9Nr@7?@dj)OQa z=a>_Eryd-4a=kb%<}L5@ajqA~GT;+!VUKfwMW54}tozf5Jdef^#WP7or}wK~y?T8Y z6&01mG3J|Pepfm8JeQMWQrKH{z6bfsDCoz>K_@&BeB5N-@;)Dju52)Tl{M`3nh}P& zpAC($d^UPR02yovCjHGpq?74NN?lccv#_u@2)*`%f6r#|d%3<`Keln;XdO8A1&^Hs zKadv?5U?70t#!Nw$DR*C&ob^`yWH?kOm;?)No@of*Ul${niv{A!frwt7a&+(S` z9UL5LeSLk`POgf0VzxJmO!p#QUK>jWOM_^Pk2C4!MUYX=92&U5q7m5iA8u}L)$k`H z-);l0H`{aeN6@T0LR7nyubpP9dnIbB!tcv7*~b?~!k zN0yRVL=a6mw3sFwTt;RGvdDTv4w+Y`)7WiuNp+NFqqes8U9?vWkDHdhZyC4XN&7=1 zKb6~a=FFL!EXR+ynrzeVMXpn8%8_du0yi&LSr(LsF_}z<*5sQ$tyKYcuZpqS)txZHa64il;Hr*;I*X4C4zcuqUuIqgucwsKuDvom>LT1B3hN+{~cP6|7=ldP9U zlf|M)vdc}O=~XMqbk}@RHy-?wV|4J+p*&Z)4S4==o`HDRFEB7*jsLWM-xlCqg>LO= ziF14EGfjc=kOP3v$FZiBa{_1*UY8@=u`SKt8A^UPR#Wuh9TdECJ^7&Ce!Dl&w1o@E zadRP!-y2KXv&|aO29Gfpvw8k<8}R&s_S6~lY<`$6%I4XTc!e&OY=HA90xz29szms9 zL*@%*GnI&Qh7!+C1YIC$SahO9#FN>s9Vzxk5iR&?2gM)WN#6PCulsapyJwwl@M?V4%0R_m*@Q)!)jIr>yo?qzWG;8aJaeK~GCg z$RD7)m21VU&Q$KBg0d)6xQi0vL1nVBRiIqtE=lh%q1eZ@wEX62ia)iFd>GrxOd_vM zMdZ1un9S-Esjr1@BWTKRmtn#8B)#!X#uRjWYP7S?UCv`R_;;bofUcC{+nxG4sZ$T9 zp47v+7cKTvr%k~WFlWSK}LCn~N+sLUC`6d`q1|6gH2PY}><~drh zr;38A%E-NN1qB_dCYxQWXu_UIQXAaw*|>4z&U2ms49OOxXkLMj`X3tuRf+SRb$HJJ zx84Lz1@%VG!+B4ze^b7*Wlk@d^FVJ&ULM_%_jDs=t1e`2r$i|}s+9lpLCSb~nu_jR z0lrs9vkF#{cSQ~b9o$MTyNYOHeGK)TI_l-np+j%M#&`lV^op7rw6!LzCvBhChd3Wv z64oDMWgrdk9Yh2DhLBOf5MY3Vs4jW{?TXZ*?ejIMI=nAU_3TC69n@tRtY@fDp@#w$ z#*Cz*muCr@Y|24?6t=mH{MHxJ-1qCqZ{KE`cz7x4uk?6{PmDjoxO0K8@>v)$tF9>z z>yNx^0Bw#LOgce2G%R>HjSLw{Dbd5};KE_FKLL4J+#uQ!sZHA=G-+w3c2bf#dr^rS71DWH{`3Qi`{p$H-Pug;m$S(B{p3cE?MrU1-L@$l z_D+j29r#Vp6^rN9o=nlD+$9EN7jH}}lE=~NG*jBPay&t|L+4kS5WdGE=x8V^ZZr)? zn+)SW^BmHJsL6TXe2geYAqZv0T@chNs>qrls%$>mfUd8I{M+`Dhz z41A;2yCoI?mN-2>XI0_Fobing%chX?atkWTv82j;D~Y{A?@L#U&FM=1Bs!mELdVh! zY1%wJnOAE043J|}6Z3@gZzW4*QZnyE?Iw00kMg+R7vDWW3o_FQKJz)a=NIr-r;!6# zy@?YcKA(d5zx;zd+h3hmSkv^Cc4V7jPaatgbg0~pZmpS4*O3o?QZ$7=L~i>5`eRwV z9yx^Rkbkf?dCcxh7VbTWb3>VX;{EL>bbMtxdE!S)m#4gpiHRY6CjSaH=MOV8vzy49 z1K7{D_#gQC5txSoW%(<2mR7hmx)*zqM~N5l)*U(N;$mkyz1kLKu%OGpq0g)wOY0Wt z(MaUg!+>W)XOI3@lXi-8Q^uux8TY>L?(SXqrr`K}8f|JAdoXpI{s;r;sxENDgQ1lp23h6>|`Q$^$e((=@x0nRv>4omuUlu>U}frV*5e7p zD)lh!OWB`)_St6x8SCb;&hhNK@&NXMD1#!(rh(Xb3gXKJwVO+KJlGxZob&B(HaXH~ zt1am?@QCBURCX^OLEDhi?}+G2`1X(1`*oobFQvwS=|gY(`p&N8+?(Tljv@Ko|41H- zYuch8RKNS~I~~Ml_9%Peri#4Uo11)o`LfcUu9r@w4`ByRrRq}y@Fd2owuSd5=;WkN z46z&WIr~rWT#JFrIWS+w@f_QimVW+wTeMAUj0+{izkOhv#$cSdApVU(4pWes9J{w9 z(e>*37_;w7=NaBl4>0^PeCD+CezSeHBjzszuNDVC;);8WIDY*{>-~0_xE){{R4^X; zA|@M+@nZw~7z7+NS%KV1x+Updr3CCF*AAV6CL+YyZKC2W!J8*m=N*ckWq+t2=I z_IXU8EN$?dc4)(n$b%FStEiw}oq6uUespFV!u%xLG9F(%u6ca5#FhWd`~D}deG3lw zm+vx8!CcX7tgms3f!KL#`JZf~|6ktSJg!^w{NORmw(0+c@yg|7pT)Tn+ZWFHd1Wqz zbBMQn%Kt6>#pP!EaR2^&HO@I16I!!ojUVT@ymF4uyd2kyul=tsH}@^uBz`ux(c3E@ zf0xbTW8B`1molEj{tRNrP{x#iMbu85IPo~+N{oe+mzM`}-8hf_uNX@$W0c1ymw_=T z?ql{TY;#*y-sj`|UcRoy$8&qL?_(Sp@x*k*K#_=l)*$vfIdJIUFVu%%8ww9)F+TbCY!UYn*OTo7+hfKQ zStr5e=Jth-D3x(bey@WvlAe#d3uvHZ9Cfa}I( z=efpnk^79t2{5@}#&a=t%NbXlXl8a|g5mJ1wqyHz<89jIQPk89Pot-{f5vN+dHZKx z<5Zql>G!yAI8yueXg%G_T)&Am5ih44jHii*me9D^P%>H;N#iyr(l`%i8nbB$jop(- zhII?csBRIB-2rSC<7#-CGj&u{c-gym@9#Nh1b=VG{5p^Ax9h-VXM4zFo#!Xx#EjR1 zJDZOL9VR8)RLzh1yN zjNv)>cJA?}PhtDVxdQMXCmy%Z6cizE+ryY|yrse)T;4x%U&eod`||o0{>#@f2Hb)J zM>%$GbU3nz7z?&Mv67}9$&h%k)sYf%++Hp*VZZv#6!`uwi3?BIo<`$#&Xd@1r%s(- zXliPH!}u`#-Biva-n6CcU)VmfjbS^-8b8kUzzvs7x3=EzGo|l084hh4^PmyobvZEE zx%N%EKYW`m^?$4Zlxs6?%ynW-pwtCoy9!u#@LCUYzOa&<&O={#zJz@CY@#{)swnj6 z4)Wdx9A`}qxm6XDPu&KZ4t(8YcQlRNI)}Or>itSpRrP21xl^!hVLZ0q%!7E$^W5g# zkaJ^v-!&I@rGW8nKl47{aTyu&=5-~oZN|MLX0#{9qF-a*{C6|{-GYI0eOhpEu19ik z-zF^lqg?X5xK`rf37?%NAKz`11FK9lG1a=$6?os z@O#nY*{-+D0rrnP=GpHswtyTk!_jfZZpO>GOpKQ|t?emfMhA(TX8|WKV%)rCeFHyl z!O-8t(YYR3%~-nsXQkwOZLP%9<1Zf}x9k*&sfWG4n>^O%NnG7?V-Zc?S|G9Yv71Aw zb6+*)c^<=`9fm*i<+0LYOWDRV&W~~92)*h;A0MAhvn_{yj^9(FVs~CUP_YMaeQ1BQ ztvXQ;3q@MwssNn*&$SqT%N00l5o4{a5dz+q=L-BC8le`Q(DFn*3jcB)g<7R7Rpf;_Ox~AF6Y3(Vzw_8e%;Tr{O{SY@-%O12*Zz## z9=zKm#CyTa6*$>UIho_C@Un$3z;}|8Gf4ALBvoik7!NXcXwn!lckmbfV5Z`04xt!4 zf~!Llj}YL1x}YA+B_y6np~(ANB%iSCR6Wh#TO~OK&-^r+k&@8FD*#gu1g6Z~g4sTB zUljq8U+CGh=TETVdzfS3G0(P#c?Q^42gFqi87qM<>OuKT1#00NR)cR~&LPlE1z27e ziRbmS?Mm4`O}xXK{KM*5Dz7<+Qt%-Y?UW@C(S4dCEqCcCxro#P8(Q?sZplY1y?%l+ zfQ2(B5wM|%JaU#xUcxy)mHc6kn46e%5Ph&GO7at3x^($NPfzbEa}?~)IHrWXG)8#9m!fd?`ssA{i9cJAG2HMGAQ0=h{( z7V{SCpw(hsR>kZts7GfSWZPNlf)&A~jJHvw6x6}SsSBljvw@PH*3*(7k5bN!bCiDT z0?pa7n!K`?lUr5_d4X35K>G*m+CWxy`I1{0o$WoEp}2aE!w|3+&Q7 zd{VZig=<;w*ZDQyQVH&ZIhTRX>ZHb;3$Nf^)SI~%)_Jw?FO`96uQ{09SzW0I@JHrh zlq@?_ci@1`#TZ(5qO7g{l8;G#ahO)!Iwv`qm;>8r?#>O8m+=5E;|Bd4b2DyLB{Zo4 zeh&OhPm`gIh)aKCjwUZJZ$8I3%+mmaN<{osEx8(SM4N)TNxr5kM2*UV)n9Wqz1;e~ z=56}8Ye?>kLjSq>totGVz1W zD}TNqIi2+Dr)h4@TFL9oEY5&UDw5oe|Ms6yL5p|m= zU{eXXE+gD~`f15k&Fw8Q zSmup(MQV~wfcBr9mG5B5TMYttWfk1SUG0e(NV}W)tDOt_gFn)c99E=XZ|dpP#AB)2 zb*IkLRf)N*B2UF8`wBj*{P}sxqcf7zD*f_fO22+a@>;&7SrkycT5?-+PwpnS>N3f1 zaSS`eXW}#FxKQR~j)$1%f{q}2S>VKLT;|;<^PXre$#>O*(<+P}@|yD+7Cb`oUT*V7 zP;H`)*Qa%h_2?-0GS>bdh1T)#(vfs% z@o?IiFpQk%3?qI2!8FNl0BK{q^>OQmdEOh^QFY1XG3VRMT7@#*J3;>nEo{0uRlK@P zx#$D@h5~rKOR^4&&mN+{i~Gpsqe`+npGnpymeSOQMC1?An6V8 z05>?}Y#Lb~TO#?vWt;PgjvhN|jyPG1F=qB(%oD=?WaLFVTxG8C#PZQJE8bA@g|3Mv z)R57{8LmkmPX{xbcth5Kws42cn=yyU{Nczsx-=|kgyayld29@1(ONCp+FyF%beq7 z@Gkh4p71*fl8en-Jce|`^}&ITl6{~(3;J0vE$Yo<2<6vxf(98}AeX;~r4mIsb)<1t z9pN9k((-Tj(kePhNzeAv{2$TwA8e)Ri-VtyG93L3c-Bp5-7|q_7%{f=cK*dYDfHn9 zX-RRrm@A!?GMOePO_h9Ud9DTJ=2%J26u$@Xnm7HlWUAyXxgNMj)`9ucS<(75B2-s$ zsLUfXkH;K;Z}>XaP)jZqyX-+HF2uTf4@v|=l4op6?qfkSL%ObZWZ4V z+`~S9VQPi8|2JAQ#Bx)RZ_ULRTFqSRtd&+|m2UHzZ?yx*#+++uu|3^dXDfNvo2#wp zTB(Js!)5f5)D>eK?OCQz_7S?0gPj&Qh>}7zB@Y`pTOGbkO>(jPjg90(nU6*JJD4cE zU`{q^Mfx+?L}Ff+%MX9bdXPVc4Yi)_^!2R%10r~*ri22)Elz&W^E+xz# zMr8{IkcDr58tKs&egN|q_cjg(AD{)C z&kVV75OdXMHbmSxTjNd4SNpudS$mdxlY5b;aCz~Ko|4Z)9?Ti}4X@aEX> zV5abDjOmz5@THsJe-^Sf6K!YC(^7umK?<;|J%EP~W3C@s%sHrYF7y2->p~mXZ4V~q{HwOiroEfJ zB=7Hp`R%aMR&xLAGt9^|)1jC*h_$yh(zc*dx>t$Ag8)8eaI%KYXQ=b4*U1}@YG_v;~_v_(!c zAN^TyVoU1f-wy;e{#Nftk9YgfgY6#lWtB4>SZ$AQ4XkK=))ZR4d^|bEjV0rGqseT} zaLQdUkZPgbuR-k1I)cgoRpfEdwjo#cb?ihFCJ*?U%MKe^%p3-5Q5kFJT!gU@&I#Z4 zQE!&_?Z3Hh=$rP4g}UH=4LoNI+F}O!a{>Ax@9?J7^Q?Jzw9A`*sBx3Jhudpyr1pTd z52rJY=@9G=>mO?3hR}9s5Lg4Tbq;bF=nz;3!MSL@htez7LO3}&?nb*8Fh<5WA7k4X zCsKpY@z~q;{q6F;YoF_jzUqLvpbG4{KjyO`>R^v?7>;+WWX;6o%8>itZgFX3-3044 zt`@P~F{Lw@wp0;ezAxJW8(ET)lCl(>M*#C*JZ2bg zeY5QU-Z+1|yzkoQIv}=VT|^hy)jsgo!(k81V0&Hg%}p41fF#z9WTYo=$zD3=1Zzh& z#!tStHp=8a>qiPgN8exUYkHG4B(rC_?SnpQ6YEG2eX!X_rF#4mg77hFc#awj&*|VM}7y|h&gK3CbUPLr0xduLe3S-2$rW12M pY|pv8JU_X;`MLkuvHsst-~W9k{lmX8(b86L$$|cN_g~xs{|E9Ta=-up literal 0 HcmV?d00001 diff --git a/win32/installer/translations/english.nsh b/win32/installer/translations/english.nsh new file mode 100644 index 00000000..4bb354d4 --- /dev/null +++ b/win32/installer/translations/english.nsh @@ -0,0 +1,42 @@ +;; +;; english.nsh +;; +;; Default language strings for the Windows Viking NSIS installer. +;; Windows Code page: 1252 +;; +;; Version 3 +;; Note: If translating this file, replace '!insertmacro VIKING_MACRO_DEFAULT_STRING' +;; with '!define'. + +; Make sure to update the VIKING_MACRO_LANGUAGEFILE_END macro in +; langmacros.nsh when updating this file + +; Startup Checks +!insertmacro VIKING_MACRO_DEFAULT_STRING INSTALLER_IS_RUNNING "The installer is already running." +!insertmacro VIKING_MACRO_DEFAULT_STRING VIKING_IS_RUNNING "An instance of Viking is currently running. Please exit Viking and try again." + +; License Page +!insertmacro VIKING_MACRO_DEFAULT_STRING VIKING_LICENSE_BUTTON "Next >" +!insertmacro VIKING_MACRO_DEFAULT_STRING VIKING_LICENSE_BOTTOM_TEXT "$(^Name) is released under the GNU General Public License (GPL). The license is provided here for information purposes only. $_CLICK" + +; Components Page +!insertmacro VIKING_MACRO_DEFAULT_STRING VIKING_SECTION_TITLE "Viking GPS data editor and analyzer (required)" +!insertmacro VIKING_MACRO_DEFAULT_STRING VIKING_SHORTCUTS_SECTION_TITLE "Shortcuts" +!insertmacro VIKING_MACRO_DEFAULT_STRING VIKING_DESKTOP_SHORTCUT_SECTION_TITLE "Desktop" +!insertmacro VIKING_MACRO_DEFAULT_STRING VIKING_STARTMENU_SHORTCUT_SECTION_TITLE "Start Menu" +!insertmacro VIKING_MACRO_DEFAULT_STRING VIKING_SECTION_DESCRIPTION "Core Viking files and dlls" +!insertmacro VIKING_MACRO_DEFAULT_STRING GTK_SECTION_DESCRIPTION "A multi-platform GUI toolkit, used by Viking" + +!insertmacro VIKING_MACRO_DEFAULT_STRING VIKING_SHORTCUTS_SECTION_DESCRIPTION "Shortcuts for starting Viking" +!insertmacro VIKING_MACRO_DEFAULT_STRING VIKING_DESKTOP_SHORTCUT_DESC "Create a shortcut to Viking on the Desktop" +!insertmacro VIKING_MACRO_DEFAULT_STRING VIKING_STARTMENU_SHORTCUT_DESC "Create a Start Menu entry for Viking" + +; Installer Finish Page +!insertmacro VIKING_MACRO_DEFAULT_STRING VIKING_FINISH_VISIT_WEB_SITE "Visit the Viking Web Page" + +; Viking Section Prompts and Texts +!insertmacro VIKING_MACRO_DEFAULT_STRING VIKING_PROMPT_CONTINUE_WITHOUT_UNINSTALL "Unable to uninstall the currently installed version of Viking. The new version will be installed without removing the currently installed version." + +; Uninstall Section Prompts +!insertmacro VIKING_MACRO_DEFAULT_STRING un.VIKING_UNINSTALL_ERROR_1 "The uninstaller could not find registry entries for Viking.$\rIt is likely that another user installed this application." +!insertmacro VIKING_MACRO_DEFAULT_STRING un.VIKING_UNINSTALL_ERROR_2 "You do not have permission to uninstall this application." diff --git a/win32/installer/translations/french.nsh b/win32/installer/translations/french.nsh new file mode 100644 index 00000000..02f8ce34 --- /dev/null +++ b/win32/installer/translations/french.nsh @@ -0,0 +1,43 @@ +;; vim:syn=winbatch:fileencoding=cp1252: +;; +;; french.nsh +;; +;; French language strings for the Windows Viking NSIS installer. +;; Windows Code page: 1252 +;; +;; Based on Win32 Pidgin installer french translation file by +;; Author: Eric Boumaour , 2003-2007. +;; +;; Modified for Viking by Mathieu Albinet + +; Make sure to update the VIKING_MACRO_LANGUAGEFILE_END macro in +; langmacros.nsh when updating this file + +; Startup Checks +!define INSTALLER_IS_RUNNING "Le programme d'installation est déjà en cours d'exécution." +!define VIKING_IS_RUNNING "Une instance de Viking est en cours d'exécution. Veuillez quitter Viking et réessayer." + +; License Page +!define VIKING_LICENSE_BUTTON "Suivant >" +!define VIKING_LICENSE_BOTTOM_TEXT "$(^Name) est disponible sous licence GNU General Public License (GPL). Le texte de licence suivant est fourni uniquement à titre informatif. $_CLICK" + +; Components Page +!define VIKING_SECTION_TITLE "Viking, logiciel d'édition et d'analyse de données GPS (obligatoire)" +!define VIKING_SHORTCUTS_SECTION_TITLE "Raccourcis" +!define VIKING_DESKTOP_SHORTCUT_SECTION_TITLE "Bureau" +!define VIKING_STARTMENU_SHORTCUT_SECTION_TITLE "Menu Démarrer" +!define VIKING_SECTION_DESCRIPTION "Fichiers et DLLs de base de Viking" + +!define VIKING_SHORTCUTS_SECTION_DESCRIPTION "Raccourcis pour lancer Viking" +!define VIKING_DESKTOP_SHORTCUT_DESC "Créer un raccourci pour Viking sur le bureau" +!define VIKING_STARTMENU_SHORTCUT_DESC "Créer un raccourci pour Viking dans le menu Démarrer" + +; Installer Finish Page +!define VIKING_FINISH_VISIT_WEB_SITE "Visitez la page web de Viking" + +; Viking Section Prompts and Texts +!define VIKING_PROMPT_CONTINUE_WITHOUT_UNINSTALL "Impossible de désinstaller la version de Viking en place. La nouvelle version sera installée sans supprimer la version en place." + +; Uninstall Section Prompts +!define un.VIKING_UNINSTALL_ERROR_1 "Le programme de désinstallation n'a pas retrouvé les entrées de Viking dans la base de registres.$\rL'application a peut-être été installée par un utilisateur différent." +!define un.VIKING_UNINSTALL_ERROR_2 "Vous n'avez pas les permissions pour supprimer cette application." diff --git a/win32/installer/viking-installer.nsi b/win32/installer/viking-installer.nsi new file mode 100644 index 00000000..83ac6311 --- /dev/null +++ b/win32/installer/viking-installer.nsi @@ -0,0 +1,553 @@ +; Installer script for win32 Viking +; Based on Win32 Pidgin installer by Herman Bloggs +; and Daniel Atallah +; Heavily modified for Viking by Mathieu Albinet + +;-------------------------------- +;Global Variables +Var name + +;-------------------------------- +;Configuration + +;The name var is set in .onInit +Name $name + +OutFile "viking-${VIKING_VERSION}.exe" + +SetCompressor /SOLID lzma +ShowInstDetails show +ShowUninstDetails show +SetDateSave on + +; $name and $INSTDIR are set in .onInit function.. + +!include "MUI.nsh" +!include "Sections.nsh" +!include "WinVer.nsh" +!include "LogicLib.nsh" + +!include "FileFunc.nsh" +!insertmacro GetParameters +!insertmacro GetOptions +!insertmacro GetParent + +!include "WordFunc.nsh" + +;-------------------------------- +;Defines + +!define VIKING_NSIS_INCLUDE_PATH "." + +; Remove these and the stuff that uses them at some point +!define VIKING_REG_KEY "SOFTWARE\viking" +!define VIKING_UNINSTALL_KEY "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\viking" + +!define HKLM_APP_PATHS_KEY "SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\viking.exe" +!define VIKING_UNINST_EXE "viking-uninst.exe" + +!define DOWNLOADER_URL "http://downloads.sourceforge.net/viking/" + +;-------------------------------- +;Version resource +VIProductVersion "${VIKING_VERSION}" +VIAddVersionKey "ProductName" "Viking" +VIAddVersionKey "FileVersion" "${VIKING_VERSION}" +VIAddVersionKey "ProductVersion" "${VIKING_VERSION}" +VIAddVersionKey "LegalCopyright" "" +VIAddVersionKey "FileDescription" "Viking Installer" + +;-------------------------------- +;Modern UI Configuration + + !define MUI_ICON ".\pixmaps\viking_icon.ico" + !define MUI_UNICON ".\pixmaps\viking_icon.ico" +; !define MUI_WELCOMEFINISHPAGE_BITMAP ".\pixmaps\viking-intro.bmp" +; !define MUI_HEADERIMAGE +; !define MUI_HEADERIMAGE_BITMAP ".\pixmaps\viking-header.bmp" + + ; Alter License section + !define MUI_LICENSEPAGE_BUTTON $(VIKING_LICENSE_BUTTON) + !define MUI_LICENSEPAGE_TEXT_BOTTOM $(VIKING_LICENSE_BOTTOM_TEXT) + + !define MUI_LANGDLL_REGISTRY_ROOT "HKCU" + !define MUI_LANGDLL_REGISTRY_KEY ${VIKING_REG_KEY} + !define MUI_LANGDLL_REGISTRY_VALUENAME "Installer Language" + + !define MUI_COMPONENTSPAGE_SMALLDESC + !define MUI_ABORTWARNING + + ;Finish Page config + !define MUI_FINISHPAGE_NOAUTOCLOSE + !define MUI_FINISHPAGE_RUN "$INSTDIR\viking.exe" + !define MUI_FINISHPAGE_RUN_NOTCHECKED + !define MUI_FINISHPAGE_LINK $(VIKING_FINISH_VISIT_WEB_SITE) + !define MUI_FINISHPAGE_LINK_LOCATION "http://viking.sourceforge.net" + +;-------------------------------- +;Pages + + !insertmacro MUI_PAGE_WELCOME + !insertmacro MUI_PAGE_LICENSE ".\bin\COPYING_GPL.txt" + !insertmacro MUI_PAGE_COMPONENTS + + ; Viking install dir page + !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 + +;-------------------------------- +;Languages + + ;; English goes first because its the default. The rest are + ;; in alphabetical order (at least the strings actually displayed + ;; will be). + + !insertmacro MUI_LANGUAGE "English" + !insertmacro MUI_LANGUAGE "French" + +;-------------------------------- +;Translations + + !define VIKING_DEFAULT_LANGFILE "${VIKING_NSIS_INCLUDE_PATH}\translations\english.nsh" + + !include "${VIKING_NSIS_INCLUDE_PATH}\langmacros.nsh" + + !insertmacro VIKING_MACRO_INCLUDE_LANGFILE "ENGLISH" "${VIKING_NSIS_INCLUDE_PATH}\translations\english.nsh" + !insertmacro VIKING_MACRO_INCLUDE_LANGFILE "FRENCH" "${VIKING_NSIS_INCLUDE_PATH}\translations\french.nsh" + +;-------------------------------- +;Reserve Files + ; Only need this if using bzip2 compression + + !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS + !insertmacro MUI_RESERVEFILE_LANGDLL + ReserveFile "${NSISDIR}\Plugins\UserInfo.dll" + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Start Install Sections ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;-------------------------------- +;Uninstall any old version of Viking + +Section -SecUninstallOldViking + ; Check install rights.. + Call CheckUserInstallRights + Pop $R0 + + ;First try to uninstall Viking + StrCpy $R4 ${VIKING_REG_KEY} + StrCpy $R5 ${VIKING_UNINSTALL_KEY} + StrCpy $R6 ${VIKING_UNINST_EXE} + StrCpy $R7 "Viking" + + ;Determine user install rights + StrCmp $R0 "HKLM" compare_hklm + StrCmp $R0 "HKCU" compare_hkcu done + + compare_hkcu: + ReadRegStr $R1 HKCU $R4 "" + ReadRegStr $R2 HKCU $R4 "Version" + ReadRegStr $R3 HKCU "$R5" "UninstallString" + Goto try_uninstall + + compare_hklm: + ReadRegStr $R1 HKLM $R4 "" + ReadRegStr $R2 HKLM $R4 "Version" + ReadRegStr $R3 HKLM "$R5" "UninstallString" + + ; If a previous version exists, remove it + try_uninstall: + StrCmp $R1 "" done + StrCmp $R2 "" uninstall_problem + ; Check if we have uninstall string.. + IfFileExists $R3 0 uninstall_problem + ; Have uninstall string, go ahead and uninstall. + SetOverwrite on + ; Need to copy uninstaller outside of the install dir + ClearErrors + CopyFiles /SILENT $R3 "$TEMP\$R6" + SetOverwrite off + IfErrors uninstall_problem + ; Ready to uninstall.. + ClearErrors + ExecWait '"$TEMP\$R6" /S _?=$R1' + IfErrors exec_error + Delete "$TEMP\$R6" + Goto done + + exec_error: + Delete "$TEMP\$R6" + Goto uninstall_problem + + uninstall_problem: + ; We can't uninstall. Either the user must manually uninstall or we ignore and reinstall over it. + MessageBox MB_OKCANCEL $(VIKING_PROMPT_CONTINUE_WITHOUT_UNINSTALL) /SD IDOK IDOK done + Quit + done: +SectionEnd + +;-------------------------------- +;Viking Install Section + +Section $(VIKING_SECTION_TITLE) SecViking + SectionIn 1 RO + + ; Check install rights.. + Call CheckUserInstallRights + Pop $R0 + StrCmp $R0 "NONE" viking_none + StrCmp $R0 "HKLM" viking_hklm viking_hkcu + + ;Install rights for Local Machine + viking_hklm: + WriteRegStr HKLM "${HKLM_APP_PATHS_KEY}" "" "$INSTDIR\viking.exe" + WriteRegStr HKLM "${HKLM_APP_PATHS_KEY}" "Path" "$R1\bin" + WriteRegStr HKLM ${VIKING_REG_KEY} "" "$INSTDIR" + WriteRegStr HKLM ${VIKING_REG_KEY} "Version" "${VIKING_VERSION}" + WriteRegStr HKLM "${VIKING_UNINSTALL_KEY}" "DisplayName" "Viking" + WriteRegStr HKLM "${VIKING_UNINSTALL_KEY}" "DisplayVersion" "${VIKING_VERSION}" + WriteRegStr HKLM "${VIKING_UNINSTALL_KEY}" "HelpLink" "http://sourceforge.net/apps/mediawiki/viking/" + WriteRegDWORD HKLM "${VIKING_UNINSTALL_KEY}" "NoModify" 1 + WriteRegDWORD HKLM "${VIKING_UNINSTALL_KEY}" "NoRepair" 1 + WriteRegStr HKLM "${VIKING_UNINSTALL_KEY}" "UninstallString" "$INSTDIR\${VIKING_UNINST_EXE}" + ; Sets scope of the desktop and Start Menu entries for all users. + SetShellVarContext "all" + Goto viking_install_files + + ;Install rights for Current User only + viking_hkcu: + WriteRegStr HKCU ${VIKING_REG_KEY} "" "$INSTDIR" + WriteRegStr HKCU ${VIKING_REG_KEY} "Version" "${VIKING_VERSION}" + WriteRegStr HKCU "${VIKING_UNINSTALL_KEY}" "DisplayName" "Viking" + WriteRegStr HKCU "${VIKING_UNINSTALL_KEY}" "DisplayVersion" "${VIKING_VERSION}" + WriteRegStr HKCU "${VIKING_UNINSTALL_KEY}" "HelpLink" "http://sourceforge.net/apps/mediawiki/viking/" + WriteRegDWORD HKCU "${VIKING_UNINSTALL_KEY}" "NoModify" 1 + WriteRegDWORD HKCU "${VIKING_UNINSTALL_KEY}" "NoRepair" 1 + WriteRegStr HKCU "${VIKING_UNINSTALL_KEY}" "UninstallString" "$INSTDIR\${VIKING_UNINST_EXE}" + Goto viking_install_files + + ;No install rights! + viking_none: + + viking_install_files: + SetOutPath "$INSTDIR" + SetOverwrite on + + File /r .\bin\*.* + + ; If we don't have install rights we're done + StrCmp $R0 "NONE" done + SetOverwrite off + + ; write out uninstaller + SetOverwrite on + WriteUninstaller "$INSTDIR\${VIKING_UNINST_EXE}" + SetOverwrite off + + done: +SectionEnd ; end of default Viking section + +;-------------------------------- +;Shortcuts + +SectionGroup /e $(VIKING_SHORTCUTS_SECTION_TITLE) SecShortcuts + ;Desktop shortcuts + Section /o $(VIKING_DESKTOP_SHORTCUT_SECTION_TITLE) SecDesktopShortcut + SetOverwrite on + CreateShortCut "$DESKTOP\Viking.lnk" "$INSTDIR\viking.exe" + SetOverwrite off + SectionEnd + ;Start menu shortcuts + Section $(VIKING_STARTMENU_SHORTCUT_SECTION_TITLE) SecStartMenuShortcut + SetOverwrite on + CreateDirectory "$SMPROGRAMS\Viking" + CreateShortCut "$SMPROGRAMS\Viking\Viking.lnk" "$INSTDIR\viking.exe" + CreateShortCut "$SMPROGRAMS\Viking\User Manual.lnk" "$INSTDIR\viking.pdf" + CreateShortCut "$SMPROGRAMS\Viking\Uninstall.lnk" "$INSTDIR\viking-uninst.exe" + SetOverwrite off + SectionEnd +SectionGroupEnd + + + + + + + + + + + + +;-------------------------------- +;Uninstaller Section + + +Section Uninstall + Call un.CheckUserInstallRights + Pop $R0 + StrCmp $R0 "NONE" no_rights + StrCmp $R0 "HKCU" try_hkcu try_hklm + + try_hkcu: + ReadRegStr $R0 HKCU ${VIKING_REG_KEY} "" + StrCmp $R0 $INSTDIR 0 cant_uninstall + ; HKCU install path matches our INSTDIR so uninstall + DeleteRegKey HKCU ${VIKING_REG_KEY} + DeleteRegKey HKCU "${VIKING_UNINSTALL_KEY}" + Goto cont_uninstall + + try_hklm: + ReadRegStr $R0 HKLM ${VIKING_REG_KEY} "" + StrCmp $R0 $INSTDIR 0 try_hkcu + ; HKLM install path matches our INSTDIR so uninstall + DeleteRegKey HKLM ${VIKING_REG_KEY} + DeleteRegKey HKLM "${VIKING_UNINSTALL_KEY}" + DeleteRegKey HKLM "${HKLM_APP_PATHS_KEY}" + ; Sets start menu and desktop scope to all users.. + SetShellVarContext "all" + + cont_uninstall: + + RMDir /r "$INSTDIR\etc" + RMDir /r "$INSTDIR\lib" + RMDir /r "$INSTDIR\locale" + RMDir /r "$INSTDIR\share" + Delete "$INSTDIR\AUTHORS.txt" + Delete "$INSTDIR\Changelog.txt" + Delete "$INSTDIR\COPYING_curl.txt" + Delete "$INSTDIR\COPYING_GPL.txt" + Delete "$INSTDIR\freetype6.dll" + Delete "$INSTDIR\gpsbabel.exe" + Delete "$INSTDIR\intl.dll" + Delete "$INSTDIR\libatk-1.0-0.dll" + Delete "$INSTDIR\libcairo-2.dll" + Delete "$INSTDIR\libcurl.dll" + Delete "$INSTDIR\libexpat.dll" + Delete "$INSTDIR\libexpat-1.dll" + Delete "$INSTDIR\libfontconfig-1.dll" + Delete "$INSTDIR\libgailutil-18.dll" + Delete "$INSTDIR\libgdk_pixbuf-2.0-0.dll" + Delete "$INSTDIR\libgdk-win32-2.0-0.dll" + Delete "$INSTDIR\libgio-2.0-0.dll" + Delete "$INSTDIR\libglib-2.0-0.dll" + Delete "$INSTDIR\libgmodule-2.0-0.dll" + Delete "$INSTDIR\libgobject-2.0-0.dll" + Delete "$INSTDIR\libgthread-2.0-0.dll" + Delete "$INSTDIR\libgtk-win32-2.0-0.dll" + Delete "$INSTDIR\libjpeg-7.dll" + Delete "$INSTDIR\libpango-1.0-0.dll" + Delete "$INSTDIR\libpangocairo-1.0-0.dll" + Delete "$INSTDIR\libpangoft2-1.0-0.dll" + Delete "$INSTDIR\libpangowin32-1.0-0.dll" + Delete "$INSTDIR\libpng12-0.dll" + Delete "$INSTDIR\libtiff-3.dll" + Delete "$INSTDIR\libtiffxx-3.dll" + Delete "$INSTDIR\NEWS.txt" + Delete "$INSTDIR\README.txt" + Delete "$INSTDIR\viking.exe" + Delete "$INSTDIR\viking.pdf" + Delete "$INSTDIR\zlib1.dll" + Delete "$INSTDIR\${VIKING_UNINST_EXE}" + Delete "$INSTDIR\install.log" + + ;Try to remove Viking install dir (only if empty) + RMDir "$INSTDIR" + + ; Shortcuts.. + Delete "$DESKTOP\Viking.lnk" + + Goto done + + cant_uninstall: + MessageBox MB_OK $(un.VIKING_UNINSTALL_ERROR_1) /SD IDOK + Quit + + no_rights: + MessageBox MB_OK $(un.VIKING_UNINSTALL_ERROR_2) /SD IDOK + Quit + + done: +SectionEnd ; end of uninstall section + +;-------------------------------- +;Descriptions +!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN + + !insertmacro MUI_DESCRIPTION_TEXT ${SecViking} \ + $(VIKING_SECTION_DESCRIPTION) + !insertmacro MUI_DESCRIPTION_TEXT ${SecShortcuts} \ + $(VIKING_SHORTCUTS_SECTION_DESCRIPTION) + !insertmacro MUI_DESCRIPTION_TEXT ${SecDesktopShortcut} \ + $(VIKING_DESKTOP_SHORTCUT_DESC) + !insertmacro MUI_DESCRIPTION_TEXT ${SecStartMenuShortcut} \ + $(VIKING_STARTMENU_SHORTCUT_DESC) + +!insertmacro MUI_FUNCTION_DESCRIPTION_END + +;-------------------------------- +;Functions + +;Macro to determine user install rights +;Will be used to determine where to install the program, shortcuts, ... +!macro CheckUserInstallRightsMacro UN +Function ${UN}CheckUserInstallRights + Push $0 + Push $1 + ClearErrors + UserInfo::GetName + IfErrors Win9x + Pop $0 + UserInfo::GetAccountType + Pop $1 + + StrCmp $1 "Admin" 0 +3 + StrCpy $1 "HKLM" + Goto done + StrCmp $1 "Power" 0 +3 + StrCpy $1 "HKLM" + Goto done + StrCmp $1 "User" 0 +3 + StrCpy $1 "HKCU" + Goto done + StrCmp $1 "Guest" 0 +3 + StrCpy $1 "NONE" + Goto done + ; Unknown error + StrCpy $1 "NONE" + Goto done + + Win9x: + StrCpy $1 "HKLM" + + done: + Exch $1 + Exch + Pop $0 +FunctionEnd +!macroend +!insertmacro CheckUserInstallRightsMacro "" +!insertmacro CheckUserInstallRightsMacro "un." + +;Macro to determine if Viking is running before installation/unistallation +!macro RunCheckMacro UN +Function ${UN}RunCheck + FindProcDLL::FindProc "viking.exe" + IntCmp $R0 1 0 notRunning + MessageBox MB_OK|MB_ICONEXCLAMATION $(VIKING_IS_RUNNING) /SD IDOK + Abort + notRunning: +FunctionEnd +!macroend + +!insertmacro RunCheckMacro "" +!insertmacro RunCheckMacro "un." + +;Installer extra configuration at execution time: language, path, ... +Function .onInit + ;Check if viking installer is already running + Push $R0 + Push $R1 + Push $R2 + + ;Check if viking is running + Call RunCheck + StrCpy $name "Viking ${VIKING_VERSION}" + + ClearErrors + ;Make sure that there was a previous installation + ReadRegStr $R0 HKCU "${VIKING_REG_KEY}" "Installer Language" + + ;Preselect the "shortcuts" checkboxes according to the previous installation + !insertmacro SelectSection ${SecDesktopShortcut} + !insertmacro selectSection ${SecStartMenuShortcut} + + ;Read command line parameters + + ;Read language command line parameters + ${GetParameters} $R0 + ClearErrors + ${GetOptions} "$R0" "/L=" $R1 + IfErrors +3 + StrCpy $LANGUAGE $R1 + Goto skip_lang + + ; Select Language + ; Display Language selection dialog + !insertmacro MUI_LANGDLL_DISPLAY + skip_lang: + + ;Read desktop shortcut command line options + ClearErrors + ${GetOptions} "$R0" "/DS=" $R1 + IfErrors +8 + SectionGetFlags ${SecDesktopShortcut} $R2 + StrCmp "1" $R1 0 +2 + IntOp $R2 $R2 | ${SF_SELECTED} + StrCmp "0" $R1 0 +3 + IntOp $R1 ${SF_SELECTED} ~ + IntOp $R2 $R2 & $R1 + SectionSetFlags ${SecDesktopShortcut} $R2 + + ;Read start menu shortcuts command line options + ClearErrors + ${GetOptions} "$R0" "/SMS=" $R1 + IfErrors +8 + SectionGetFlags ${SecStartMenuShortcut} $R2 + StrCmp "1" $R1 0 +2 + IntOp $R2 $R2 | ${SF_SELECTED} + StrCmp "0" $R1 0 +3 + IntOp $R1 ${SF_SELECTED} ~ + IntOp $R2 $R2 & $R1 + SectionSetFlags ${SecStartMenuShortcut} $R2 + + ; If install path was set on the command, use it. + StrCmp $INSTDIR "" 0 instdir_done + + ; If viking is currently installed, we should default to where it is currently installed + ClearErrors + ReadRegStr $INSTDIR HKCU "${VIKING_REG_KEY}" "" + IfErrors +2 + StrCmp $INSTDIR "" 0 instdir_done + ClearErrors + ReadRegStr $INSTDIR HKLM "${VIKING_REG_KEY}" "" + IfErrors +2 + StrCmp $INSTDIR "" 0 instdir_done + + Call CheckUserInstallRights + Pop $R0 + + StrCmp $R0 "HKLM" 0 user_dir + StrCpy $INSTDIR "$PROGRAMFILES\Viking" + Goto instdir_done + user_dir: + Push $SMPROGRAMS + ${GetParent} $SMPROGRAMS $R2 + ${GetParent} $R2 $R2 + StrCpy $INSTDIR "$R2\Viking" + + instdir_done: +;LogSet on + Pop $R2 + Pop $R1 + Pop $R0 +FunctionEnd + +Function un.onInit + ;Check if viking is running + Call un.RunCheck + StrCpy $name "Viking ${VIKING_VERSION}" + + ; Get stored language preference + !insertmacro MUI_UNGETLANGUAGE + +FunctionEnd -- 2.39.5