qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH] w32, w64: Add build rule for installer


From: Stefan Weil
Subject: [Qemu-devel] [PATCH] w32, w64: Add build rule for installer
Date: Mon, 15 Jul 2013 23:52:51 +0200

The new rules in Makefile allow building installers for QEMU on Windows
using NSIS, a package which is also available for Linux distributions
(so cross builds are possible).

The rules for NSIS are in qemu.nsi which also uses two new images.

Signed-off-by: Stefan Weil <address@hidden>
---

This code is used to build my signed installers for QEMU on Windows,
see http://qemu.weilnetz.de.

Best regards
Stefan W.


 Makefile              |   55 +++++++++++
 pc-bios/qemu-nsis.bmp |  Bin 0 -> 154542 bytes
 pc-bios/qemu-nsis.ico |  Bin 0 -> 4846 bytes
 qemu.nsi              |  250 +++++++++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 305 insertions(+)
 create mode 100644 pc-bios/qemu-nsis.bmp
 create mode 100644 pc-bios/qemu-nsis.ico
 create mode 100644 qemu.nsi

diff --git a/Makefile b/Makefile
index c06bfab..29f1043 100644
--- a/Makefile
+++ b/Makefile
@@ -437,6 +437,61 @@ qemu-doc.dvi qemu-doc.html qemu-doc.info qemu-doc.pdf: \
        qemu-img.texi qemu-nbd.texi qemu-options.texi \
        qemu-monitor.texi qemu-img-cmds.texi
 
+ifdef CONFIG_WIN32
+
+INSTALLER = qemu-setup-$(VERSION)$(EXESUF)
+
+nsisflags = -V2 -NOCD
+
+ifneq ($(wildcard $(SRC_PATH)/dll),)
+ifeq ($(ARCH),x86_64)
+# 64 bit executables
+DLL_PATH = $(SRC_PATH)/dll/w64
+nsisflags += -DW64
+else
+# 32 bit executables
+DLL_PATH = $(SRC_PATH)/dll/w32
+endif
+endif
+
+.PHONY: installer
+installer: $(INSTALLER)
+
+INSTDIR=/tmp/qemu-nsis
+
+$(INSTALLER): $(SRC_PATH)/qemu.nsi
+       make install prefix=${INSTDIR}
+ifdef SIGNCODE
+       (cd ${INSTDIR}; \
+         for i in *.exe; do \
+           $(SIGNCODE) $${i}; \
+         done \
+        )
+endif # SIGNCODE
+       (cd ${INSTDIR}; \
+         for i in qemu-system-*.exe; do \
+           arch=$${i%.exe}; \
+           arch=$${arch#qemu-system-}; \
+           echo Section \"$$arch\" Section_$$arch; \
+           echo SetOutPath \"\$$INSTDIR\"; \
+           echo File \"\$${BINDIR}\\$$i\"; \
+           echo SectionEnd; \
+         done \
+        ) >${INSTDIR}/system-emulations.nsh
+       makensis $(nsisflags) \
+                $(if $(BUILD_DOCS),-DCONFIG_DOCUMENTATION="y") \
+                $(if $(CONFIG_GTK),-DCONFIG_GTK="y") \
+                -DBINDIR="${INSTDIR}" \
+                $(if $(DLL_PATH),-DDLLDIR="$(DLL_PATH)") \
+                -DSRCDIR="$(SRC_PATH)" \
+                -DOUTFILE="$(INSTALLER)" \
+                $(SRC_PATH)/qemu.nsi
+       rm -r ${INSTDIR}
+ifdef SIGNCODE
+       $(SIGNCODE) $(INSTALLER)
+endif # SIGNCODE
+endif # CONFIG_WIN
+
 # Add a dependency on the generated files, so that they are always
 # rebuilt before other object files
 ifneq ($(filter-out %clean,$(MAKECMDGOALS)),$(if $(MAKECMDGOALS),,fail))
diff --git a/pc-bios/qemu-nsis.bmp b/pc-bios/qemu-nsis.bmp
new file mode 100644
index 
0000000000000000000000000000000000000000..ae82cd2697ab688137c1758c724c2e2597cf8121
GIT binary patch
literal 154542
zcmeI5ca$GRcJD`Pd+m+vvVh1LA%YMhDr=MwNGK3R6hSEGoWqO)$^i+K11JCjHZQwg
zFU$J<;dgxeo{#NgAOGdB&iUAW-nG~9efsyExpP(3-P02!jec~W)~J5Ba((OGy7yLf
z_n?tqefCo|$#oz9y7KQh|9W?-sp(X6DWRI0#l(N*b2XKJ6#{=cUvyz(@Dud^)TvV!
zH(p=-;uk+5J^y54ee12a?%TKTop;{p*RS6%{K7AkSXcK5?B2Z_tiSS=ucUT!^5n^j
z7A?Bqf(ue(&address@hidden>`Fh^Gd5np!pZmF=(;&>9JGYV6^uK4HIdkS%#HT;~X&bs(vt~j6
z#b5kIC^KiyB>YRi^h*}z=Vw0i8Gg=~F~h=^H#LB)CMDPBKmYkDQ>G}Ol)`%X^5vEI
zMS&address@hidden|>E3c?D{$6-t!{Ru8{CIx)address@hidden
address@hidden<(FTsl+Ql<Y#XsYcI+73anC*X^ytx}QzvwT<htXIJ4C<t-g}|H
z_10UY5o(s;address@hidden;CMiO)A&>@JQ`y4t&&B22Q34;;gZr!>aK75#;U--fo
address@hidden>Ad)22;ZxNxEJl7<VQsTwIw8<<53+msX5{rmSP7I_ZnL4mKm_8PTZa>*qs
zt;pY7Zn;Ip4jw#MGnQOiwrruCE3drLO4zh%6O^m2y2>aoz4Q`|zxd*djY0sR>GiN-
z!)address@hidden)ZgyiyED!n
zYmx~&@u}s?!kPpJ4jiCBu%14BIuof+pFThT^FMDH3BZOV_|liYWW+st_CWdam%j|<
address@hidden(address@hidden|~h@
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
address@hidden;<hAJrl)
zH|{Sdu_?{=H?frcPts!`TXo)address@hidden(wW^7?H!jAf$}2&}?K
address@hidden@iR@>>gb5QM;@HII
z#S)Y$1fbaCJf2K0N+8T8vStXjzZ`BD$bN3nB!I>_gG)1MMF0M56XO6B+-y})J}zrT
zVZGwR3E*bKk-i6JOVCsMDffjv3LU#iG4bRl#~<RS93^1N$(h6Eve{e^<+vL&W=zm9
zt28Ts5vP3_z%|address@hidden)ObfBxt-%0IER%#-Tx$4m1UELgWVk=8;address@hidden
z;|rw(0V<D~Kw-2=78tey4&address@hidden<|Q=qEzVHliB*+dRn
address@hidden;address@hidden>7Tb0WG<N%MQ5p6t+DJP!Mb1
zs^VDtT<wCjFHm7Pm$e3<ITjMjf1G%TrkEa=1Eu3*4YSi7V{?zS+~7Cfc%yX<xDEG!
zuaU-<jDYwW0mw+&CBBBok-&;lvVfb6uYG~Vu|_ykqkLB4Yn;H=1_CBO0a_>*2h=wy
z2zPv}eS=M63(y#ApV(s!&@i}Pa|I#`G3zpyewqS?AQc_Zb7Z)$t_apF?(address@hidden
zHNsidsSuqXFrYQl*lna2wpRM83x<U?i$3LWsjfizX`KwmX|address@hidden;rO7jvM
zdU327$pC9O1qBQyQX>address@hidden)SaK+9q$krQhQ
zD<dmD8JPpB4)address@hidden;S0nysx`5(8jy;<utx9FywYx0yI{>?N|`7R
zfL;)86fn(mzxP42ZC$27GZ|WhHHpc~UsP!R>H=<vb{U|=`Y2BqziUB9sV1-2?)WLm
address@hidden(g&P`CQv=*k?DFdca2uUK05m1Emu`mjBw^zDnjJ<gFa4!1ubZI^
z%kuKNnNFwpmmpam;address@hidden;8de2Oj9v<`c=+UD!Q3-e%uDSp^;address@hidden
zb&address@hidden
zy>XqRhqEz<address@hidden)7A|>Tn}p(9O2egaVB!*W6dZ5x2#1A
z2x~>address@hidden&z#8sWnEiK#7d-^YTyR05gYkL|v(rd6-z#uU1Wl%#NpgdmSfWf8p}oV`
zEWz>BF2e}iCcWFGz_U;address@hidden
zUuF;address@hidden&%zj%Rh;t?D6u~05S+CJlvtm&p+4sol~|address@hidden
z3~L+?cA3G&*;*q88Z~M^QRWb%BUpA&@N!^>S}qF|F}|=vExiK4CLpKip?k-I29P(u
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
z=OP@)RbNXSW;2&8w$OuqP?`a)yufV<JkZ3lnQl?WL2-=%1-LDj0j)H^ZBa#lRxaSS
zTxL)c1>8m_Py}cd2;address@hidden>xQvR*h5h$^)R%GLToiA9k?4msAvUNP}
zPD#lbf%5`ufJRwD>0*Net<S4%IbAEGf)O|`u*OISW$9zy;0pRu{>&c%ux6_$xO^7u
z9Up6YIB9aCR03`d<@address@hidden;YikRwI4Wc|hdwORrz0K?Xz
zOxw3|address@hidden<0sd!xGUeic<&6V9dh}3Ta;address@hidden
zHK1F!ZX^z(z#7M+yrTpZ#z0mU(8RuGCs$E~Suq7SIN~(address@hidden
zhZ}oME;z)pM*-^?BU&AlQLNVD&_IS`=h6&W?nSW1Qj<#uE7%VjUBgCG6h4i>qyk55
zYUt`R^>WHxaN9mti~Ql(Xqune>XKJnn_K{mO^tP|y68T8<(dW?Hf&%h^zgN?kZaU$
zWSc)+3H;address@hidden;(;address@hidden
z#4N0{oMvip&R==VQqNuMDS+6X4fZtUAe8~zI;?4)cawUo<t(+wuD#!^2-eu<3~XRr
zYc%k&6BRtIa2Bvm#iGQTVQC}QsRNrsEU{*AklU<address@hidden
zg$!qr)%0i=8J;@R&H`VfVrkLGMhjLDnj{&{CJPYr`Vp2Y9qDNnYqnE)u9ozy;|ln5
zDXE>63}-(@mD-7vB3Pqk0Sfv?yk4i)l|%G=4a8im-4w1Y$b6t@&address@hidden<o6=H_
z5kwTqo}yUF*$k2jjVc9E3p%<SVO#N4ED5xl`}G>NnInbhQD}x_QCLb5x*Vmkbq*a*
address@hidden&Crdp-Pju<0dOlUC5=byshUj|>f&O91Kmlgpw??phQdIh
zwkhm)wNe`+td}fVLM|pbpsVA}V$JimntSMM(j2^QmReU1(POP-UN?h+rVYM!dDMX0
z=mgAqVlRxJk_jl!gacf_OBwyf6Dk};z*T^--{1glWr4`v3SmD_vO4H>Gw?O;Mn$It
zlzasUdu<%JRhRyn&X4vkioj)8g`dp=P1{<nn=zMy>x^QZHH^*DO%G2^2^V8!`<auP
ztc^s&8lX|;{RUGTOKws2wqU(%*)nF779((PBi4+$Y%T&address@hidden;Zj=7<Q=
zq^{RNnzsK$jAIP4jSkRA?7+9s_VSCAz=F%3H88P(&hWBiFI~D+x*0pC66uwJzaO;$
zWTiI9=HjQ`zQr*K!QDozK{mLGbfHKZgn1ynEf->(O1%uXsP+x;ID>k3PJpH_Jjf6X
zuQ%#B;address@hidden;0^Cqit?7azruDjD;xgHJJpv`x=QVsSYJ7=xi-zmGPF!Mr
zUc=X-#+O*PXt>Vn#9)o78(address@hidden><address@hidden&Q)+%i_3#iH2b
address@hidden&Q)2rLTX?YG|^#9EVD6u9lS+pIe8Bf9n0Ta8Y@
zJBV(%<rYOjRM>XCsoG*m<LO<yc2zE1g$kR`5Ukm&m3>V>VG^q&poxtvI)5>}ac^1_
address@hidden(ZdbU*tS@;lz_9bS-7#swP%V4GO)^l5{D#P2Gm7S*rbI0uyER0E?NAL
z)-|;address@hidden>%8ZotJaswlj*gfVi1v%#c+1%gJZy41e_jqSXA
z`EshGBY4yWH$X#Qv0{aqLBFuU)i0pLDY|myN}|~P$308f8(i4t+5%p+YL)F>0`9hL
z+n|t(9`O(address@hidden&>>Yn;GT?RhG7Kp^`4YoDgb{xzWBuSoS+#?O6d55nwRoUXJ`
address@hidden;Ww{+d+e-&CuW5Kl<ELf)!}FbQ*D1V>krpih1AFGsV+XNpd$)5-gqOiS<mF2
zQLM8DA*P=ztbI$0V9lcn2(;9B<%?3-J4i(VZuv|~tOFs;_(;4XQCU-93i#LdBW!G2
z!Pm$}3bacyya?7-X^}vTwdFd8SgY5pyezV6kM^o;scqdEB<os!040jeL~vvaHP+35
z8&=}dy4)^Uvk<address@hidden(HJ(-6=IoiGt>w#bAm&1z1G*Z_
zD#lOr5ELygphs~M^lVl#E70N;1q4J1BUCAf0)_LRgl)D2<KTa?d8)aD5*4dGXj7^P
zzD9BKiW!BVENN>XRj$VCHQS~rY&;{WGC53$;$-v3;MP$DuMw%iEWu=q8|k}a;T){l
address@hidden<@EZR5}|k2-4HR{&-=&Zbn|<)*R4Zj~eF+e3UUGE_&#a
z2`J2j13SpZAqe>O8gQ*Zl5uLn>I#4+mQ5DL#`2%o7;A{YZ3PlApo!u_dxt1~kFjo%
zZWd#Wwrpk>aQkN1W(R9JbXCnpIpO$OyjV9=<AIy>n*1%oTG?CiR|address@hidden
zW+D}-9oEJMPn}e$SQjZXONO&|h7e0Vo*Ea6B1d012PJ#~8veCoNOAh&address@hidden
address@hidden)T;6gIfk>WLGr9{ZX+AYEw>kKiD1<l|fsBQ9RRpIGbx*4{uOtzLDR6tN?$#7q9
address@hidden;UAlCUcnMyAq{OhZ<VnESh}qyuExZ*(;4WfT`;viMjcL&&
address@hidden;iA+L;qBgMD2co?`<8h_gkH1#6bRiL>_d}G)aSFHc?h}LVL
ztPEG{2$Wb?E3$FF&KIm%b}_(address@hidden)FjMmT*{c<C~s`ClyGMOnnOP?
zu;$RL`A^E{uXE7Mj{<9q+2Hb7uv>j>PL$u!R5Apw@&-}xsg>!SGop*4u<<address@hidden
zJaB#ZR#_NJ)@address@hidden(1Al1H58gFB=SLJgB
zQL#74*NYWqc`YU1)dg$Z!m_UkC`?M_1!!z!(fNz%jsH_o;D|WIwWwI4FdjXoB)|_z
z0!qN?>M_L^C$Ab}Svw9Y(|jrXl-oy!5<nxv*}$bP`B95tjnh?rTI|`t;KD%DruOR9
address@hidden|l>z>KQ<0?Nt&J6-=D+h1`tDH8RV>e7?lCwL&HYMH$9z?Pz
z9_-?$fvBOgzW|M8&08yJKjX<address@hidden@address@hidden)%;address@hidden(el!EI?7_
zH)DT+dVLhJ+O7&3oP~9f{cG#256EMd>fj2tuq~J0=Yr^6XRX7ULd;Dn+&$a^8bBE$
zFy(E%hN*r38r&H!^Stp~5<gSnhIs|F%xY|KhSc0CX8~&)Mj!ZOV$BHnXYCDW`Mq(y
z0=IFuVNI^!Ax(qZCWgk=pH&bAxUab43WZCo83)address@hidden<*^R-uZh+6mOc%T
zgEc7yH_Yy3V~jN^?ebXDUoK=gi>wl~iww8AeBdnbH3&address@hidden&R#hX<D+KT
zlIyZrta-{<&address@hidden;YcwS;)@~42Q?YdTiH3$&%mwr$
z(DIF`%d9|)QxwZLx|5c2R4IsB!BN-<d!3Dv(U7ICSR+M5f}uw#3t<!_$tX5YQ5D!L
zrzm#o2y?{IRCF~p{)?q1rJ}B`F3`<b!q~HhP9uSveG?QXDQQyMc&=RiV#Oy)+v4{8
address@hidden(zr^faP?yOEsyZ-bB5ou4WP><9;n
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
address@hidden;)Sij%dDf-n!Hx0S;J
zM5S3X!IHH-fW4{SofDvGKZl)y;pL}S=Ww<address@hidden
z66>77sj{dN>address@hidden<(@253%qO007Rr^=#Atg8&robHrZ=L}AjMU_}r
z8K61cDY4EOoGObdv92;ebGlPvoijL97FA+hWq{^%r^GsEaH=e-#Jb7=&FM~wb<W^a
zSyYL2l>wU5of7Mu!Kt#S66-1hG^aZy);WVyWl><w>H6UEeQaHnO0c}Xz^t$(CJ?9L
address@hidden<Mr1bNg!{LDAFrgR>o9%oC~aZ
zv{~oF2`FrjRM0k_f)QO&_OJ|5JeKRDf>-}BN=J_#<xw39_fJ)14G!mK)eN$b*C*pA
zkMBXJIv!o&)e40D>#aCluSbcYTMJbJ=awzXTFB7xjEoATOcHQlTYwV9vp*bPht7d*
zT17Z`xI-gfZ~~B+=BYr{WiMPMij(address@hidden)><^Ih5Q?6*<7p{-
zxP$ku^H2;FD&address@hidden<fG&1UlO0#Lxy63Moszr{1Gx(g7XBK&&2^V=z
zGwWS;WY^Ol{-F<^3!ox<c!yD?Y9#<%qByiqMxK!&%<Kx<address@hidden
z)TLJz=w)<<pq~CH-yhDHi;=V5m(mujJw`>a=HW8%isyhY$HD>DMki2W9rHE(h2&vu
z5$5fPHOxhUc1e^K!P?{1Y`9}$%^Jal3}<Oj7urRJH#-_iK-H4r!Q!Y`t(!DV%T2H-
zlcp7X&00o*Tw1nNFM`yT?<^T!ut!Q3V9k<BPc^UFov-=s36QZ;v+Vj8Xs9KAy;jE=
zOs2YGSt$7lqa~BzGoN9-CXJSF_=_mys-k%QnxWHUx$2Id)8r{C5)>I6)==R{Io1Hn
zs4^*vdP(3FGtv;-BCMsb!Pja$Ra2%d=mxiVJeJky9%L-2o1q{vd3c|R>H>OHR;|~-
address@hidden;rN{dG`%-vFnI+6#mSSU~x2D*eQbaen^&S-pxAY!s5jDxJBWQGtgI%Vl
address@hidden@wH?)@cCGV-6}FO!4mKkykb)y(2I35GBV~?AOQnf
zWisp#H54({Ez->>Q2MY{C!kdka2uU~J-^9=;rx`^#y1fN2k)jMdn(address@hidden<vJ-
zHK`SU^Pj&?Ezq!rahPK<rm49^Bug+oEO9E<7Ml~ulHo8KgBj0(oTAP|R2J5%D^-Rw
zO5#BRT+9a~N!#1TTe~Ti0*e=gbw(Cg44`R4tfb`>l_kSzK<ltZ7G=rsoMxQ0D4K^k
zfNT$BxEesLUVatuHKQ6_?bTq$zo7KC8d*Bkn0U#yG^qi2kc_bmN8YNyBK{m-GHbdr
z%GUN#9U+WhSM%a^oaXV?bjA9ap!K>VG`?)ZnI3@>>oYyV9jE;B1#8}Z$#S5p<BZ<<
z)spi9Yk<address@hidden<hIVj5n%kq(Skn!xu%>Zk-Cb)address@hidden>BCl
zd3`RzMyF&SCA!aRv6iJc)|MrxC8q(tYU_2-2FvaPmL?APPQ_WQkwKKv<HnPcSK+C7
zxV#iL-&foKQAh^XY(address@hidden&S5#mrgO}Cl9U$gQ
zp&address@hidden;SjSe2?OZDgL(HOVXH!wsMMmoy$?R2Bt$U|*;19=?
address@hidden|r;d(il13CmZ8t4%G05_rtWg%?G+cy${o3EL)address@hidden
zv|aW-1d~k?)q-E0E(g;i3u{UsasHlWY9HlANwutlEo{p!|B2bu-gVaQSo^&XfToWg
zR=L6L9D=n_E);>A?>e(A3Y-P3gBta-#F}v^v6jI1GW<;QH5)nzMoq%A$=7f$5*5y+
z_I$qfEo>LQra&%aIHFq}Zx<address@hidden>ks~)IJyMxB~u#
zlR-E6sr8ywxH7t*^6NFRz|A0YX&address@hidden;GxP$=+%iZk5_3mpzNRqIRMK
zkcKd|pm$Lt&J9J8k|<IVC5raBSdo<;x?NCWtRb>qQwZxaVfdP`cpSevb>ZuV&g+5+
z2fCJ(>;address@hidden)|!N3DQ#zvCv7tc9mWvt|address@hidden|N<R(SrwGhwYP
zmdo}oRSSRNYhvx}85B(eY5{JrCf3$&gS*vOYoNSt21OuRQ)z>ZCvY2`fPf|z9QkQO
zL6|9Fxd;eT=w1m&P(xwM11+5Zm)address@hidden)#3X0)##9
address@hidden(?fgMX)G(address@hidden&Lmh}HUXduT-Y2mmB4^j`M?cbgX}jr
zg4+GheBI2aY-u=u|C*8agWuA^3#K=$sSAfpa3G;address@hidden&P_
zUvssw4P<address@hidden<xJ9*NKw=z-0i8~z8ei>LU20Js3TqGvuGBWSf(YD!^tM6}
z<5cQpxJ9*ZK<6K*>address@hidden;ccn0%zM6!
zK#BGFf>hhvxn$8o;4be^!U%ltyWjp_zxr|0{iBcn*N;B_)gOKQqmO_1qmMsI?jL^i
zG51G5;Qrx9zw*N$B=<)@address@hidden>zfUd+je=Yq-zw&*5|H}8jr~CWA{9U_$`FkHW
z+~581m%sbr_rCj`<address@hidden@{^obSrTZJ-{?<3X_06v*_cy-w
z&address@hidden<@ZMM7KgIn4_j~WY&wc8h_uhT`)Vn9&eftFW
zJ1397o!rMxo;Y^$_**BAy~%z2*wJHe9X<Bu5$?C%Jp9(t!*3ov#C`P0p`(Wn>OOMl
zz>!1yxep&q?n4LmHQf969o)ay?gRVwoPNJ?U|(|Y-<address@hidden
zCina~Gv>{nK5tfX&z&`W&address@hidden;address@hidden<E<X0N*N#mza
address@hidden(0rf2U2R%;address@hidden)fJ>lhX
zue`+l{3|a#_wtL+y)^Eb7oUInh3B5)9{23n7oHva{4-B*Klk+G&p!1S_tQ^4TDc#2
z>WML9A0N&A<fEgwpLk>>_hX|address@hidden;(?LFhmL$`$ioi~9{#{U
z?gxhq7&f^71B3bvsqH&>address@hidden)xd%NF%PxpK8>UQ^?
zx82qK*1PVwrAN1}ciw*U9k<@address@hidden;WTW`MZmM+)ce8bh;address@hidden
zUUT^kS6_DhRhM#KcV*{mujqWu<(address@hidden@#oxh^{iq02ae#w`)FT40l4fjPC
zTvoX+{mK`)J74&P;J)O`pSSzsFMZD67hUjKy9Knzx&rjH*)u9wPoFY#I&e>#Ikf?9
z0Byi@>ZDoIC(oHNg;_CY)->kHT&BwG>CBn=a~dX3CCpD|(address@hidden>Yg)m8u#p(
zQ)kbZlFYQ}lbJJ2t*MiM{-wzifc^!bAOGTWFTe1tKz|X?D~OMK_DO^L*|Cp3GxkyL
zr=LtgTyP6<!JQ!f&=Bqs!v+EOLqlr?_t1fThtwu;*Y>?1xcm3M7r1-h*8{`__dPvs
z7vh4u`)yr>`0ZV90Pb76TzAV&address@hidden;y3Yfw<sq9pa~BoeX|uz!~kzfG1-<xx(EE
z)`Sxjz<0*fxwEDL-@>`G7S5Z!c){Eyi{>p|Jb(F;1<address@hidden&
z66;>NctOLxX#SFg^C)o9f;p7DVD7B>v!_$t>;!k%fBe)address@hidden<#Erv1e-U)
address@hidden&pL^<Y?tHk5F!->+10EREf9Sw|g9r5H25#<t6}bD{e^<{6-1psmN6g?L-o)S)
address@hidden@%xcsvH(7+e9*<HA}DXk1nSTFf<h_Vg(gE=y1bUpSX6
zK)iVV>?I55E?c|+OjoT~vU=sx`qj(V)~#GyziM6ms`YDE>t45J_4>wpUH$6Rn=B1C
z+3Qx;address@hidden<+9Z)mabg3IGHMo7XUpqQuXYa%)Lph8gTlg2`^1VyubLoha1p=`}wDz
z5Zs11^4yDbur|address@hidden<9;t{U&+okL
z=I*z4>DKi|?nI<#AdXazMS3dYp;address@hidden&0X=u-G$g9{m%p$%5JMpW
zQ)1D4xOmR8#q$%0moKSXxeRpHudUm#zJAlIYqxA%zjgD5ZCf^O-?~Znj;))xw{K~>
zw{6}S-{i8JLN;w!w_#m9vxPaZX7!3Xa9_G;>7sdy=FO%JhWIoPAOFIHm!2PAVQ_#(
zq;nhGp1}jSwSqrB=HaXr+{2A9A2gshx8O#YvwQ=0??%MM;address@hidden;NG-*L-L
zz>P>Z#N$Q$Y$5(Rux9iOXc=)o{_&address@hidden>oq+ibd73)kp|0<Xcya4|gl>biPx*}Cb~
z9a}f=+`eV^Yun%0y>rj&ukC$f*PhptdvD{dpACO^zqTj3$*7w`cJ16oY0Mc)W(vK!
zwvHLaykdeO;TO!C36CS#XHK0sZPF`(address@hidden<cINa?STngLR$3lfo4Bnuy
zHE3&t9vo6TtfH+A9n^0yYd69iRju#+!0i!lV(=c_?z!{!yMX(STYKEzRSa&3!{GUg
address@hidden>address@hidden<Xu}#Duek0u!`F5;L0QC4fBFIf2`|^Lgzq+QSO*-S3^c&B
address@hidden|+Y>lIb4>address@hidden;MUjUdq|~#_m14ckbS~eaE)Vjfk&a
zyLtuFY}t~9i|5ZlTQImMzw#owdZM#cmhWcaj^(address@hidden<<zhPd?e29bWx
zo%i3}{l2^IxVJ~QySv|(Al}H}i1Zx9rKq=J9WSh|f4=jDpEsaA7XzqZHQW^-P5r8b
zoj0ssgQNuokMiMz`+#`k(Ze;J#*=<xP0fj88%`WMdg867`}kW&{Vkg``1=-?>EVOm
zesJF&address@hidden
z{ai*F%eUah97`;+kq?d<K9qaJu)z;KFo+ule_(Kb;2tutFAR<_Z-Bc|address@hidden
zyys5A4THys`$Zfcm)a)HEl|{r$8)T+6dq4m$`hasYlODYgqJ~?o&7J={%`&gHttpe
address@hidden(=b`EE$>Z<38;?ZOed72#r{5=!y>;xZ
zBX}eb2#5CX*}o@&`?c*`sS!!Ss)0O56+|s$`JOjx8fF5PzU*;W8(U10T-+^f&BL7{
z&nq^#DQv=8a6kOe(address@hidden>~3~}VSZrS5z
address@hidden@;2)&h~gLYXZXfaWHk3(address@hidden)gY_4Ai#w>_((P7G
z-GG|+PwmI!#9cFGo6)D%)V%-h)`4~V*3{O#_wGLYQ8kmd?wnk6>YcX_yz_QV?WzN-
zYY8(AY9?+}u1*{tt{=zh|N3j&cOuL;Z`k<iS_Dhos%2>Dm9={ok{mM}%^cRo7W1Ze
z3^yveU%tHoKK8NEur~LjqlZ5-Dq-!4Fdqio6~y801a6k^n89oN_UzyLzW%)$bT(sf
zk9e?%i^09x7Mo^S?w5ES#}5-Be!*oI<AnJlw-85$gCI}>D9Ey2U)address@hidden
address@hidden&address@hidden|-_Z^F
z1MBv$8JJ9l*O&address@hidden&Ppu9gW<yL#{BPKo?SwlCdruy0N8{hQ~#v1<on
z1bv>FhN^~Lh82Kqjv0>Y2FD977qFf<{skmC+>LK7xhrb9m*-#|m}5<FKQ<b;6I*P|
z2yWm8YuzJ<KQQ7!JS_=#2Z&2y8`uwjOV2FCS;SevxpUMuQ`FnS<EJBD!5X+55k~{}
zKm+b26Mn}1WaH)G256)`0$eLK`Zj*rCENGa)bu&NaXkKEg!X%<-Z}i<yEOyrkFFW`
zwf9feOx>}2Y7GIq2dz1<c3{m{-#<WL+Q6Ecfm4pu4?ObTshWXxhwE#TytS)#Ozwow
znU#GvtAC&Q+ZObqF6n7oHob}%UsHz-zI6GLg$=AdYa0GNk2T!w;address@hidden
zDp<qa+=(PlT&cqv;C^t(a7^z;address@hidden>address@hidden
z-FVy-^=5fI_PLo<Z$$h{mtTUHwFz+yXGFI++JN?0gSo*?N`%1HO&address@hidden@m
z#amygs9~V<?mH*o+^>G{-r#iycTcNfE1_oEP6Y_-9=!J8x<NHZKR8e`sP5?6fzx-L
z0{SEG9{}qkYbv1E)*Yy;MUpdlVC|Zh)~tD<QzFK9?MQTT#Q6F(W`bdK<6gr(i%$<9
address@hidden|~O9D5-JYn$D5l=*V
z;$G{+oyFin+(de;s7p%+bTPP0vt|)TZS$I&bFE)^WwMUrS8qZbRTlXyG?Ck4YW{+$
z-3B))4eQrm+hJHQ>sxd3_%6`#SOe(SJ~#;0wqAoQa0~0{yADpTA;FH_ADpVGnR4W{
zDGgZjGs1dpg7t2&PK<70UB3#80CU^0Mj;353TwY8hk4>bt=#50H<9k)X1nB>u?;&W
zPdz?{`-w+K>address@hidden;mxG{Jv(v8Ohk?u{iR`7U)_(fM;
address@hidden&==PHpH!^DS8$UOvkPlC;p?3VUn9d`Ub}C6O{e3>Hk>^1)~R<+
zBE#7Y>@;m>1J;oYAH3$kIz;!>I%GS$hun!&address@hidden
zUnf{ElWS#Gg|address@hidden;7W+W?k1B2TN
zJ{*f|DBC3i&41pwL52%GS-}VN!SRx)Z6?yCsGCU7TEqh$4;*f(x_TpzUwrjt7jb*U
z0Ua4G90RNY9q2)pTMRDVhe@|=#7nkm*N$!YzV`2VeaW_Dy*{?#Wp;AkIe84Y5218b
address@hidden>address@hidden;`r0IK?W+B&`b&VndE{Wti}lEG
z6n<6>address@hidden@(wrC!%KODJiyiRSjyuex-S^#&#;1S%~4^7~%xYvMt?Bi^P
zjuG6CV|ORo+QUK|xP>@aH;Hs~whG+*H3k>rCejncD_VLM;_)address@hidden>
zqk)address@hidden)3ar1W;f#zP5nWa${`}N!(?dH)8O<address@hidden<Ba
z+Nfuprfi*7(XPP}Jsj~&z;5(#3Xv*qM2xQl>$(co16J-^*&ip&u{RH6w%5E+Uq7xB
zI)9>vZ{36yka$!oE>m<fwnZ={5|7H%iC``DOxiebbEm+4`tl9dg8Nx^$DVqewOd%r
zl?r!zxE~#jevZP{#NbUU_~{G|=z=?S5jVtH!EF(beJ^H=7v}NK*I$)vl~y#j2E+wA
zJPy|E7sJ$C0oGc+#oGKO0kdL#{pyYD*UABo7>BhF?0w_V!F~OfG}+gy``4U$cQ0o-
z;PIMC35dGtYHLoty=UO6J^Vbib>gYFPuM+WYw}dl{#64Kldb>qJuCX5mBG~b;%dgN
zs(address@hidden@K+f$JeZ0xpMj9rHke-GVd8!S4?bx<`!!U?s)kYgUc4<@address@hidden
zI19J#v5n^(K->address@hidden>
zh|6xcnzIlI;sX8JE1D1&address@hidden&X+NV`OnDcGa>atdi^3)address@hidden<w$3xVdm|
zf)T<T39MVEbWZ<!G;y4UcXF6VL`<!U(<}kH;uzlrQ)ABKdzW#Y_|29l1{XVS2ynLH
zFu0~^qw|%-#1_`TZHVW<&EXc^;_F0D<B-GHN1wt9Yef9X)address@hidden(4`jFrT
zabs|FHZ9_@&W767w21e*S5n<OS6Rek|address@hidden
z0aozUN(~q57Jcc$dCM0sY=9f?UWZFOS-3#~4H=sVTtFNj8lb;<<dEHNAEe>%Rnu-r
zvNK}Dh5%b9ltXE3rbu)*m|7K&85}L3v8-inF;O{3Q8~Mkc*O&(J=`Ag23P9yPaD?8
z-NIUb6SyP9ljVE#!-5;cQy6?0JK!PWCenqt>1>8LT6&h+ma3?yt>agAxsKB>4RC|F
zu{lzmffCTkL8EDt02kH<address@hidden;hfaAHU6s#gTKl$ihxC=0}Y^q
zQQCnwi0&p?LrO=iBtQ+L9E3KrC_$NR&59cwSA5;d<xIBaix(_uIK5EW>YA3EUchf=
zN7OuDd+wIPmLNXv8Qt=?=;#_)r@|dDxOg0_1$V&U(%EE#8{Dy$p1+6-aTvTMJbvvh
zH*xyqD()`Vrz76L(K=Mtc!m(rbvTfNg}5JaIP0v!!sIy0TvkaCXUtDKsIXxj8uGR+
z8{l*-GGGGz;0CzU?yaZ)Y>Z{*Ag(address@hidden>2O$zoY}Im{qAQjzT*exmoLHDScjok@
address@hidden>~R?Be7J01Z=fa~v^dZI3uu>uf`^0Xi;mr3z~poK;(QgPv9q=91?L;wdK;6Ye$!
zN2DXn;}twrq<address@hidden&1`v-zRM}#;address@hidden;8w=ku!~_fi4F3OkIIE
zIXYOm9o*BBlSm-W5mOi($q8E_(s4(xT$UU_!u(lNw=y|;#OZ~~85MRYbYmZ#cCV{P
zi*CA!^*<|address@hidden|ktfmT6z5-4+AVd}*3QznF1$K2f{
z&tG^}a2wXf+F5Wntl*eqjeb<^i#<Muv#F;cZYy|`Q6^t{#p|L)Tsm8zwwZHPhhBuZ
address@hidden)fBhE4{>3urTl~cZr=YHYtguxx+^JmXkFh{2f
z=OEa{=~%l!k9rI`Y%$vnKL$5xl4Ol^{q%ovl297>vT?b1;arsM<eVYAJZl<Lj&p{b
zYc-SwG+1-%n6a^TD%=TQH?nqvORd7%1~-x%zLsV#<y>address@hidden
address@hidden>7pYw2c*%kh%Bh)address@hidden

literal 0
HcmV?d00001

diff --git a/pc-bios/qemu-nsis.ico b/pc-bios/qemu-nsis.ico
new file mode 100644
index 
0000000000000000000000000000000000000000..1d0128cd4c37f9c845f19c499febd61f85af5961
GIT binary patch
literal 4846
zcmcIoX;@TO(tZ(SkzHh05L7lb22m6d1Q#|V1_KBZX+dn339^VF3<N$`WHjz*E5<E4
z#)!daCr(^ZVNhBS0R=)s8w5e1QDl{+r|address@hidden(address@hidden
zG&D3w%E3Ygumv!2qEv4j1q71q^Up#3ia4(ZxX1w(#L-}Q)EGY&address@hidden;p
zTKM?*prxe+7BfO%7}^U31qBF7{y_FG51{K-gqXNgNF)-dY3O3|<jDxi_%{TC2fs|s
znlx8Xpn=C~s1_WC>X*Qc2hk~26B3YBq)@X;+#21ox2FDrrudoCP4TL;Hkz%m4)y1P
zO>K-yKhxs=?fNf{b+-(;QM~IW&HEN`xlw&rn(o<gxe*tx%rCI(;`$yruuE`kJ2%Sh
zUjjkFk*$k&?h?>NdOC?gYv48Azlho$Ss;xh)BcKKJHrtvkdHdhzd#zNi9~jy_C8LE
zqzqwXoH&address@hidden>g<WE*KgbLiGFvR2MvetgI|<+<1hE6gyobOX#fYWn=Z(XP;rr
z7*z;aJmv8sg~D(i?>M8D9iT|5+bt6T(;58`&6y6glW`fT>zO5-WPTt^>Qf>^J(|^(
zNIwB6rtjE94nQm0ttgTF_OqlXjUBEAijvNNgtI=99>7~DoQOT0J}VRWK8#_Mu<T1x
zeg2ssZYD#T`m!gA5}&|V2}xqH*oV`D={4$|address@hidden;!QWgjTmbK7rzdgbg-~f%97a
z2-7VPY_PF$B#$1Y6P<zLWP!kjAQtmEn`iilU(rJ{HDw6(oc1XJLpoW=q5V*x*qZvs
zni3otUCiot8GVwt-hYX>&V>2}`n>(7rs8_v(jh&UF^I*jm13KHOus;&nQ+=sJiSaj
address@hidden<address@hidden<%m-$0?o%
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
X6&Oj5#*Cyur7}_?l4W8%9QXeKCmz*e

literal 0
HcmV?d00001

diff --git a/qemu.nsi b/qemu.nsi
new file mode 100644
index 0000000..1d57455
--- /dev/null
+++ b/qemu.nsi
@@ -0,0 +1,250 @@
+;!/usr/bin/makensis
+
+; This NSIS script creates an installer for QEMU on Windows.
+
+; Copyright (C) 2006-2012 Stefan Weil
+;
+; This program is free software: you can redistribute it and/or modify
+; it under the terms of the GNU General Public License as published by
+; the Free Software Foundation, either version 2 of the License, or
+; (at your option) version 3 or any later version.
+;
+; This program is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+; GNU General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+; NSIS_WIN32_MAKENSIS
+
+!define PRODUCT "QEMU"
+!define URL     "http://www.qemu.org/";
+
+!define UNINST_EXE "$INSTDIR\qemu-uninstall.exe"
+!define UNINST_KEY 
"Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT}"
+
+!ifndef BINDIR
+!define BINDIR nsis.tmp
+!endif
+!ifndef SRCDIR
+!define SRCDIR .
+!endif
+!ifndef OUTFILE
+!define OUTFILE "qemu-setup.exe"
+!endif
+
+; Optionally install documentation.
+!ifndef CONFIG_DOCUMENTATION
+!define CONFIG_DOCUMENTATION
+!endif
+
+; Use maximum compression.
+SetCompressor /SOLID lzma
+
+!include "MUI2.nsh"
+
+; The name of the installer.
+Name "QEMU"
+
+; The file to write
+OutFile "${OUTFILE}"
+
+; The default installation directory.
+!ifdef W64
+InstallDir $PROGRAMFILES64\qemu
+!else
+InstallDir $PROGRAMFILES\qemu
+!endif
+
+; Registry key to check for directory (so if you install again, it will
+; overwrite the old one automatically)
+InstallDirRegKey HKLM "Software\qemu" "Install_Dir"
+
+; Request administrator privileges for Windows Vista.
+RequestExecutionLevel admin
+
+;--------------------------------
+; Interface Settings.
+;!define MUI_HEADERIMAGE "qemu-nsis.bmp"
+; !define MUI_SPECIALBITMAP "qemu.bmp"
+!define MUI_ICON "${SRCDIR}\pc-bios\qemu-nsis.ico"
+!define MUI_UNICON "${SRCDIR}\pc-bios\qemu-nsis.ico"
+!define MUI_WELCOMEFINISHPAGE_BITMAP "${SRCDIR}\pc-bios\qemu-nsis.bmp"
+; !define MUI_HEADERIMAGE_BITMAP "qemu-install.bmp"
+; !define MUI_HEADERIMAGE_UNBITMAP "qemu-uninstall.bmp"
+; !define MUI_COMPONENTSPAGE_SMALLDESC
+; !define MUI_WELCOMEPAGE_TEXT "Insert text here.$\r$\n$\r$\n$\r$\n$_CLICK"
+
+;--------------------------------
+; Pages.
+
+!insertmacro MUI_PAGE_WELCOME
+!insertmacro MUI_PAGE_LICENSE "${SRCDIR}\COPYING"
+!insertmacro MUI_PAGE_COMPONENTS
+!insertmacro MUI_PAGE_DIRECTORY
+!insertmacro MUI_PAGE_INSTFILES
+!define MUI_FINISHPAGE_LINK "Visit the QEMU Wiki online!"
+!define MUI_FINISHPAGE_LINK_LOCATION "${URL}"
+!insertmacro MUI_PAGE_FINISH
+
+!insertmacro MUI_UNPAGE_CONFIRM
+!insertmacro MUI_UNPAGE_INSTFILES
+
+;--------------------------------
+; Languages.
+
+!insertmacro MUI_LANGUAGE "English"
+!insertmacro MUI_LANGUAGE "French"
+!insertmacro MUI_LANGUAGE "German"
+
+;--------------------------------
+
+; The stuff to install.
+Section "${PRODUCT} (required)"
+
+    SectionIn RO
+
+    ; Set output path to the installation directory.
+    SetOutPath "$INSTDIR"
+
+    File "${SRCDIR}\Changelog"
+    File "${SRCDIR}\COPYING"
+    File "${SRCDIR}\COPYING.LIB"
+    File "${SRCDIR}\README"
+    File "${SRCDIR}\VERSION"
+
+    File "${BINDIR}\*.bmp"
+    File "${BINDIR}\*.bin"
+    File "${BINDIR}\*.dtb"
+    File "${BINDIR}\*.rom"
+    File "${BINDIR}\openbios-*"
+
+    File /r "${BINDIR}\keymaps"
+!ifdef CONFIG_GTK
+    File /r "${BINDIR}\share"
+!endif
+
+!ifdef W64
+    SetRegView 64
+!endif
+
+    ; Write the installation path into the registry
+    WriteRegStr HKLM SOFTWARE\${PRODUCT} "Install_Dir" "$INSTDIR"
+
+    ; Write the uninstall keys for Windows
+    WriteRegStr HKLM "${UNINST_KEY}" "DisplayName" "QEMU"
+    WriteRegStr HKLM "${UNINST_KEY}" "UninstallString" '"${UNINST_EXE}"'
+    WriteRegDWORD HKLM "${UNINST_KEY}" "NoModify" 1
+    WriteRegDWORD HKLM "${UNINST_KEY}" "NoRepair" 1
+    WriteUninstaller "qemu-uninstall.exe"
+SectionEnd
+
+Section "Tools" SectionTools
+    SetOutPath "$INSTDIR"
+    File "${BINDIR}\qemu-img.exe"
+    File "${BINDIR}\qemu-io.exe"
+SectionEnd
+
+SectionGroup "System Emulations" SectionSystem
+
+!include "${BINDIR}\system-emulations.nsh"
+
+SectionGroupEnd
+
+!ifdef DLLDIR
+Section "Libraries (DLL)" SectionDll
+    SetOutPath "$INSTDIR"
+    File "${DLLDIR}\*.dll"
+SectionEnd
+!endif
+
+!ifdef CONFIG_DOCUMENTATION
+Section "Documentation" SectionDoc
+    SetOutPath "$INSTDIR"
+    File "${BINDIR}\qemu-doc.html"
+    File "${BINDIR}\qemu-tech.html"
+    CreateDirectory "$SMPROGRAMS\${PRODUCT}"
+    CreateShortCut "$SMPROGRAMS\${PRODUCT}\User Documentation.lnk" 
"$INSTDIR\qemu-doc.html" "" "$INSTDIR\qemu-doc.html" 0
+    CreateShortCut "$SMPROGRAMS\${PRODUCT}\Technical Documentation.lnk" 
"$INSTDIR\qemu-tech.html" "" "$INSTDIR\qemu-tech.html" 0
+SectionEnd
+!endif
+
+; Optional section (can be disabled by the user)
+Section "Start Menu Shortcuts" SectionMenu
+    CreateDirectory "$SMPROGRAMS\${PRODUCT}"
+    CreateShortCut "$SMPROGRAMS\${PRODUCT}\Uninstall.lnk" "${UNINST_EXE}" "" 
"${UNINST_EXE}" 0
+SectionEnd
+
+;--------------------------------
+
+; Uninstaller
+
+Section "Uninstall"
+    ; Remove registry keys
+!ifdef W64
+    SetRegView 64
+!endif
+    DeleteRegKey HKLM "${UNINST_KEY}"
+    DeleteRegKey HKLM SOFTWARE\${PRODUCT}
+
+    ; Remove shortcuts, if any
+    Delete "$SMPROGRAMS\${PRODUCT}\User Documentation.lnk"
+    Delete "$SMPROGRAMS\${PRODUCT}\Technical Documentation.lnk"
+    Delete "$SMPROGRAMS\${PRODUCT}\Uninstall.lnk"
+    RMDir "$SMPROGRAMS\${PRODUCT}"
+
+    ; Remove files and directories used
+    Delete "$INSTDIR\Changelog"
+    Delete "$INSTDIR\COPYING"
+    Delete "$INSTDIR\COPYING.LIB"
+    Delete "$INSTDIR\README"
+    Delete "$INSTDIR\VERSION"
+    Delete "$INSTDIR\*.bmp"
+    Delete "$INSTDIR\*.bin"
+    Delete "$INSTDIR\*.dll"
+    Delete "$INSTDIR\*.dtb"
+    Delete "$INSTDIR\*.rom"
+    Delete "$INSTDIR\openbios-*"
+    Delete "$INSTDIR\qemu-img.exe"
+    Delete "$INSTDIR\qemu-io.exe"
+    Delete "$INSTDIR\qemu.exe"
+    Delete "$INSTDIR\qemu-system-*.exe"
+    Delete "$INSTDIR\qemu-doc.html"
+    Delete "$INSTDIR\qemu-tech.html"
+    RMDir /r "$INSTDIR\keymaps"
+    RMDir /r "$INSTDIR\share"
+    ; Remove generated files
+    Delete "$INSTDIR\stderr.txt"
+    Delete "$INSTDIR\stdout.txt"
+    ; Remove uninstaller
+    Delete "${UNINST_EXE}"
+    RMDir "$INSTDIR"
+SectionEnd
+
+;--------------------------------
+
+; Descriptions (mouse-over).
+!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
+    !insertmacro MUI_DESCRIPTION_TEXT ${SectionSystem}  "System emulation."
+    !insertmacro MUI_DESCRIPTION_TEXT ${Section_alpha}  "Alpha system 
emulation."
+    !insertmacro MUI_DESCRIPTION_TEXT ${Section_alphaw} "Alpha system 
emulation (GUI)."
+    !insertmacro MUI_DESCRIPTION_TEXT ${Section_i386}   "PC i386 system 
emulation."
+    !insertmacro MUI_DESCRIPTION_TEXT ${Section_i386w}  "PC i386 system 
emulation (GUI)."
+    !insertmacro MUI_DESCRIPTION_TEXT ${SectionTools} "Tools."
+!ifdef DLLDIR
+    !insertmacro MUI_DESCRIPTION_TEXT ${SectionDll}   "Runtime Libraries 
(DLL)."
+!endif
+!ifdef CONFIG_DOCUMENTATION
+    !insertmacro MUI_DESCRIPTION_TEXT ${SectionDoc}   "Documentation."
+!endif
+    !insertmacro MUI_DESCRIPTION_TEXT ${SectionMenu}  "Menu entries."
+!insertmacro MUI_FUNCTION_DESCRIPTION_END
+
+;--------------------------------
+; Functions.
+
+Function .onInit
+    !insertmacro MUI_LANGDLL_DISPLAY
+FunctionEnd
-- 
1.7.10.4




reply via email to

[Prev in Thread] Current Thread [Next in Thread]