From fe57a7e582aea2a92e12d9b34cdec678f11edd6f Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 25 Jan 2012 16:02:53 -0800 Subject: [PATCH] Add Inno Setup installer script rather than NSIS --- LICENSE.txt | 11 ++ Makefile.in | 2 +- configure | 2 +- mk/dist.mk | 32 +++--- src/etc/pkg/modpath.iss | 219 ++++++++++++++++++++++++++++++++++++++ src/etc/pkg/rust-logo.ico | Bin 0 -> 94339 bytes src/etc/pkg/rust.iss | 50 +++++++++ 7 files changed, 300 insertions(+), 16 deletions(-) create mode 100644 src/etc/pkg/modpath.iss create mode 100644 src/etc/pkg/rust-logo.ico create mode 100644 src/etc/pkg/rust.iss diff --git a/LICENSE.txt b/LICENSE.txt index 826bcd17c124..102d019dbe3d 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -186,6 +186,17 @@ included: USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +* The auxiliary file src/etc/pkg/modpath.iss contains a + library routine compiled, by Inno Setup, into the Windows + installer binary. This file is licensed under the LGPL, + but, in our legal interpretation, this does not affect the + aggregate "collected work" license of the Rust + distribution (MIT) nor any other components of it. We + believe that the terms governing distribution of the + binary Windows installer built from modpath.iss are + therefore LGPL, but not the terms governing distribution + of any of the files installed by such an installer (such + as the Rust compiler or runtime libraries themselves). * The libuv asynchronous I/O library. Code for this package is found in the src/rt/libuv directory, within this diff --git a/Makefile.in b/Makefile.in index e7d5650a881d..6f77629bbf3c 100644 --- a/Makefile.in +++ b/Makefile.in @@ -114,7 +114,7 @@ LIBRUSTC_GLOB :=$(call CFG_LIB_GLOB,rustc) # version-string calculation CFG_GIT_DIR := $(CFG_SRC_DIR).git -CFG_RELEASE = 0.2pre +CFG_RELEASE = 0.1.1 CFG_VERSION = $(CFG_RELEASE) ifneq ($(wildcard $(CFG_GIT)),) diff --git a/configure b/configure index 5d94b854ea28..a9bf251223af 100755 --- a/configure +++ b/configure @@ -289,7 +289,7 @@ probe CFG_GCC gcc probe CFG_LLVM_CONFIG llvm-config probe CFG_VALGRIND valgrind probe CFG_PERF perf -probe CFG_MAKENSIS makensis +probe CFG_ISCC iscc probe CFG_NATURALDOCS NaturalDocs naturaldocs probe CFG_LLNEXTGEN LLnextgen probe CFG_PANDOC pandoc diff --git a/mk/dist.mk b/mk/dist.mk index 82ba2a82a680..339e3efebd05 100644 --- a/mk/dist.mk +++ b/mk/dist.mk @@ -6,8 +6,9 @@ PKG_NAME := rust PKG_DIR = $(PKG_NAME)-$(CFG_RELEASE) PKG_TAR = $(PKG_DIR).tar.gz -ifdef CFG_MAKENSIS -PKG_NSI = $(S)src/etc/pkg/rust.nsi +ifdef CFG_ISCC +PKG_ISS = $(wildcard $(S)src/etc/pkg/*.iss) +PKG_ICO = $(S)src/etc/pkg/rust-logo.ico PKG_EXE = $(PKG_DIR)-install.exe endif @@ -38,18 +39,23 @@ PKG_FILES := \ UNROOTED_PKG_FILES := $(patsubst $(S)%,./%,$(PKG_FILES)) -lic.txt: $(S)LICENSE.txt - @$(call E, crlf: $@) - @$(Q)perl -pe 's@\r\n|\n@\r\n@go' <$< >$@ +ifdef CFG_ISCC +LICENSE.txt: $(S)LICENSE.txt + cp $< $@ -ifdef CFG_MAKENSIS -$(PKG_EXE): $(PKG_NSI) $(PKG_FILES) all rustc-stage3 lic.txt - @$(call E, makensis: $@) - $(Q)"$(CFG_MAKENSIS)" -NOCD -V1 "-XOutFile $@" \ - "-XLicenseData lic.txt" $< - $(Q)rm -f lic.txt +%.iss: $(S)src/etc/pkg/%.iss + cp $< $@ + +%.ico: $(S)src/etc/pkg/%.ico + cp $< $@ + +$(PKG_EXE): rust.iss modpath.iss LICENSE.txt rust-logo.ico \ + $(PKG_FILES) all rustc-stage3 + @$(call E, ISCC: $@) + $(Q)"$(CFG_ISCC)" $< endif + $(PKG_TAR): $(PKG_FILES) @$(call E, making dist dir) $(Q)rm -Rf dist @@ -68,7 +74,7 @@ $(PKG_TAR): $(PKG_FILES) $(Q)tar -czf $(PKG_TAR) -C dist $(PKG_DIR) $(Q)rm -Rf dist -.PHONY: dist nsis-dist distcheck +.PHONY: dist distcheck ifdef CFG_WINDOWSY @@ -84,8 +90,6 @@ else dist: $(PKG_TAR) -nsis-dist: $(PKG_EXE) - distcheck: $(PKG_TAR) $(Q)rm -Rf dist $(Q)mkdir -p dist diff --git a/src/etc/pkg/modpath.iss b/src/etc/pkg/modpath.iss new file mode 100644 index 000000000000..c0b4475ad05e --- /dev/null +++ b/src/etc/pkg/modpath.iss @@ -0,0 +1,219 @@ +// ---------------------------------------------------------------------------- +// +// Inno Setup Ver: 5.4.2 +// Script Version: 1.4.1 +// Author: Jared Breland +// Homepage: http://www.legroom.net/software +// License: GNU Lesser General Public License (LGPL), version 3 +// http://www.gnu.org/licenses/lgpl.html +// +// Script Function: +// Allow modification of environmental path directly from Inno Setup installers +// +// Instructions: +// Copy modpath.iss to the same directory as your setup script +// +// Add this statement to your [Setup] section +// ChangesEnvironment=true +// +// Add this statement to your [Tasks] section +// You can change the Description or Flags +// You can change the Name, but it must match the ModPathName setting below +// Name: modifypath; Description: &Add application directory to your environmental path; Flags: unchecked +// +// Add the following to the end of your [Code] section +// ModPathName defines the name of the task defined above +// ModPathType defines whether the 'user' or 'system' path will be modified; +// this will default to user if anything other than system is set +// setArrayLength must specify the total number of dirs to be added +// Result[0] contains first directory, Result[1] contains second, etc. +// const +// ModPathName = 'modifypath'; +// ModPathType = 'user'; +// +// function ModPathDir(): TArrayOfString; +// begin +// setArrayLength(Result, 1); +// Result[0] := ExpandConstant('{app}'); +// end; +// #include "modpath.iss" +// ---------------------------------------------------------------------------- + +procedure ModPath(); +var + oldpath: String; + newpath: String; + updatepath: Boolean; + pathArr: TArrayOfString; + aExecFile: String; + aExecArr: TArrayOfString; + i, d: Integer; + pathdir: TArrayOfString; + regroot: Integer; + regpath: String; + +begin + // Get constants from main script and adjust behavior accordingly + // ModPathType MUST be 'system' or 'user'; force 'user' if invalid + if ModPathType = 'system' then begin + regroot := HKEY_LOCAL_MACHINE; + regpath := 'SYSTEM\CurrentControlSet\Control\Session Manager\Environment'; + end else begin + regroot := HKEY_CURRENT_USER; + regpath := 'Environment'; + end; + + // Get array of new directories and act on each individually + pathdir := ModPathDir(); + for d := 0 to GetArrayLength(pathdir)-1 do begin + updatepath := true; + + // Modify WinNT path + if UsingWinNT() = true then begin + + // Get current path, split into an array + RegQueryStringValue(regroot, regpath, 'Path', oldpath); + oldpath := oldpath + ';'; + i := 0; + + while (Pos(';', oldpath) > 0) do begin + SetArrayLength(pathArr, i+1); + pathArr[i] := Copy(oldpath, 0, Pos(';', oldpath)-1); + oldpath := Copy(oldpath, Pos(';', oldpath)+1, Length(oldpath)); + i := i + 1; + + // Check if current directory matches app dir + if pathdir[d] = pathArr[i-1] then begin + // if uninstalling, remove dir from path + if IsUninstaller() = true then begin + continue; + // if installing, flag that dir already exists in path + end else begin + updatepath := false; + end; + end; + + // Add current directory to new path + if i = 1 then begin + newpath := pathArr[i-1]; + end else begin + newpath := newpath + ';' + pathArr[i-1]; + end; + end; + + // Append app dir to path if not already included + if (IsUninstaller() = false) AND (updatepath = true) then + newpath := newpath + ';' + pathdir[d]; + + // Write new path + RegWriteStringValue(regroot, regpath, 'Path', newpath); + + // Modify Win9x path + end else begin + + // Convert to shortened dirname + pathdir[d] := GetShortName(pathdir[d]); + + // If autoexec.bat exists, check if app dir already exists in path + aExecFile := 'C:\AUTOEXEC.BAT'; + if FileExists(aExecFile) then begin + LoadStringsFromFile(aExecFile, aExecArr); + for i := 0 to GetArrayLength(aExecArr)-1 do begin + if IsUninstaller() = false then begin + // If app dir already exists while installing, skip add + if (Pos(pathdir[d], aExecArr[i]) > 0) then + updatepath := false; + break; + end else begin + // If app dir exists and = what we originally set, then delete at uninstall + if aExecArr[i] = 'SET PATH=%PATH%;' + pathdir[d] then + aExecArr[i] := ''; + end; + end; + end; + + // If app dir not found, or autoexec.bat didn't exist, then (create and) append to current path + if (IsUninstaller() = false) AND (updatepath = true) then begin + SaveStringToFile(aExecFile, #13#10 + 'SET PATH=%PATH%;' + pathdir[d], True); + + // If uninstalling, write the full autoexec out + end else begin + SaveStringsToFile(aExecFile, aExecArr, False); + end; + end; + end; +end; + +// Split a string into an array using passed delimeter +procedure Explode(var Dest: TArrayOfString; Text: String; Separator: String); +var + i: Integer; +begin + i := 0; + repeat + SetArrayLength(Dest, i+1); + if Pos(Separator,Text) > 0 then begin + Dest[i] := Copy(Text, 1, Pos(Separator, Text)-1); + Text := Copy(Text, Pos(Separator,Text) + Length(Separator), Length(Text)); + i := i + 1; + end else begin + Dest[i] := Text; + Text := ''; + end; + until Length(Text)=0; +end; + + +procedure CurStepChanged(CurStep: TSetupStep); +var + taskname: String; +begin + taskname := ModPathName; + if CurStep = ssPostInstall then + if IsTaskSelected(taskname) then + ModPath(); +end; + +procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep); +var + aSelectedTasks: TArrayOfString; + i: Integer; + taskname: String; + regpath: String; + regstring: String; + appid: String; +begin + // only run during actual uninstall + if CurUninstallStep = usUninstall then begin + // get list of selected tasks saved in registry at install time + appid := '{#emit SetupSetting("AppId")}'; + if appid = '' then appid := '{#emit SetupSetting("AppName")}'; + regpath := ExpandConstant('Software\Microsoft\Windows\CurrentVersion\Uninstall\'+appid+'_is1'); + RegQueryStringValue(HKLM, regpath, 'Inno Setup: Selected Tasks', regstring); + if regstring = '' then RegQueryStringValue(HKCU, regpath, 'Inno Setup: Selected Tasks', regstring); + + // check each task; if matches modpath taskname, trigger patch removal + if regstring <> '' then begin + taskname := ModPathName; + Explode(aSelectedTasks, regstring, ','); + if GetArrayLength(aSelectedTasks) > 0 then begin + for i := 0 to GetArrayLength(aSelectedTasks)-1 do begin + if comparetext(aSelectedTasks[i], taskname) = 0 then + ModPath(); + end; + end; + end; + end; +end; + +function NeedRestart(): Boolean; +var + taskname: String; +begin + taskname := ModPathName; + if IsTaskSelected(taskname) and not UsingWinNT() then begin + Result := True; + end else begin + Result := False; + end; +end; diff --git a/src/etc/pkg/rust-logo.ico b/src/etc/pkg/rust-logo.ico new file mode 100644 index 0000000000000000000000000000000000000000..4749b398c2d2c063219f8e5b5c99bf1547ec0d99 GIT binary patch literal 94339 zcmeHQ30zfG{{OxAcs^u%sD!uy?usIqiVG?r8j3bxHe=aj*lNod=7L%ZR+G#)lUhw$ zX|_yhn`zm!O@cX}_B5BuO4Gk(N{)%?2(I`4``*XV`+h#S-kvDdJ9WM1-1A$$zvY~J z?ztBrvQY@d$4Bxxh<4kFo+YBlNKdX(@MT`v0V9sPV!7;S$=OQaNW%RgF)T zbH>kd_pCg5q0$u}L>Utct1kRJDahHfWgZo{Jr~L^b5IaPM>;(1qNrr&6iu5&`RO?z zI7G$4INw{GjPtDc$Vo|PmnTye)BP{V?vY$kFrLyh?H-3~QqSuO=2VWn?y~eLT4j2A zWcQXC>4iUM9zqhC*MYw z$7q!_Ae|#-OHUu;swA3IncvWnnK>ZS9%*w|xLk9z^85@$)JX+eQGOx2!In1%?qIhQ zi_#||G^Wa%q7?J;a<2=d~cuc?jsaUdwr2JPRgQP9Pe|=UM3m1=LHc z%rDTi0@s|1wgtsnL3&|%q}?{lmY$Yh5al{#pXkb;6Vxle@&4eV!hC8IQ|ZbtNS;z2 zUEn&{J()u=%U!{#PgC-zR3MfW9Nz+0K>=h|=11mplPd)UeDc@H@Doo-l*b3=rRqvt zY%7Y7YfY_NwWD@zJ5oZ&L`v+OOkI<^Q}=E?sYmyo)T?JIrS|DheN+2WTK^0hkTHmc z3?9nIFuHVD4&~-tM!C5oXyhNRq$@^_qN_$-O{1^Qqie@pPd8kD6Ww^jSh{)at#sS1 z1%qAQvIrgBadtpWX&`4=+(GUhL3{te9ky@9_S^QY$$jmjsQIG687%ZZ+2 z{&&lXaWOO(f5-e~%)gKM4;lEA+7adQER%l~(cFnd%kL*z_Z(6A8lLkvG$3tr zSJJi)C+++3r2ROLwDJ|C9a?`9e-cj~xviK#nfd!O|E0{&vdV8}{;3T}`)gOy77Zuu z{pq)i)7+WdK> z{c8njo7SJ=rwGcW#*|MjX)bl5<&;9}D4oh_2x$#Qk=8YzwBh%WHhv*#^Ijos#RsIV zKNY_uo=tL@C!dBf|Fz6Nh57Gi{(mz6tIWTO`QK-L);Vtr^Y3K-@{{^IQxXkj2{*HZ zSuEihmhc~z@P90!yn#kPch%_NaE%U)*QjEiMu%5ubacIbFV%--Gv-fZ{xs&ljQOu) z{>jW=%>0iu(CFE&8m%0z(Yxa{S~pLlEh{wIv;Gu+F!RF$7cqY`=5NXT?U=ta^Y?F{ z(G^`a8b4g4zl~>E^E4`1q0!gtJ^VS@Ioa9SIVe^CW(~^B$w*1b$j%&;rC+Y<=aXIx z9D}nmvvRt1X`k6GF0NZj;4 zWuO)ueG_cqO>9+D7tS%^wuDqh>PvpV#2yLFZS}%ELDLXX6L$_}Ia&d!*q z2pfu#!xqt~i8ImT3nO(-PJ&MBp|67oDQ4Q=_H4%11;Ov~iS*gjb`C^F6X>&L! zt}oD_fFrXtz@((4*jlCmD}+E!YOF1@R}#>*IVFEkziteMOUqWRsqLUs)Y;h?t!$lJ z#en{z&fWSA^2kr?+$h2Y`q1zQN`S_b^0V66+#ycTyCR}GvueaSE5Qls;E33msDxAl zHCKDJiE7r`?Sh}235ay|kiltfU2t2lyGeATxP)$=l5t5+_9YqJIyQ@H+zj-rp>5h= zmOnTvrDcdmej}8qsHjH#ALnOwMhZ8g8a49B4{4dge#_>Z@q`9EdSr1%+GMtdTKy{I zb4lo%oim`P!|u6kpay+*N;5BN4rT8F+1Z1$oIG8f#=)Wzc$shHa5x!HT5=rI>z57k zZ8oNFq?^T8J!m+}vB_yY+qxMKx#PG5^PI>f*c}%e*Ly%tI8To($QcqB?S^S~hr4ah zi}mqgi|flJg8j-A?zq0GeOWap4@yX*zDaRF!3u}2*6 zF@2M6Y@_ZUTT=h*w4^3{wP9D#H{yAjJ3^uo5)#@sb?ekNN6Y@~lt$smftaMUi<>!_ zB&r+etK{o;1Bou5(}24Yny@UJv)RS18}MbDhrUX_2SybdTN)=UCt$Zm;BVNvR|l@x z+?@vK@*!0(x`%bfr2e2!>&WwfEviGW9L@*Mvppl8^8g@cmTrk+P) zXhLRGs9tr)rKYC#P3h*=)7I9oO=dd`NsgMcO&U*SOw^`%qk3%zRM9tVJuovfGb1fJ zj78dP^&6(Oax`lZ%L;kYONj$L&ksCutLWi>45T>Sqs+mx0fsiqk4xbm9&k;f+_uoD zdY*vR3q{(yb#S`fIZ2^zx0@3KV|8GECJPS@wmCz2wn1??L%F#4!4naqdf_=KalygC zJk|6cn4N=sIKAlc2epl7;GDFJnUlFWA9%)Y;)V&Lco>*GBq1|91-Zo2dunDj&-p!K z_1VOWp-R3ptYPOqS!oHd+!fb@?*#}(lE?2}3=D-!NOT)c?29=ixt@gSgiC6y2c4~3 z8o2eM&xS0FyVJUXnoC@&PM)3Fy=6;0yi=1-y@w3Z$uG&^8yR|s4DQt_27Qq&TXxU% z&}R=yOKZveHV%E3hdv{PO+y)+r6({^%d|Al^r>HFNGyX52#f2MH6*(m18#CL6JH#Q zA%wozDlj^Ec1BWkERSg(-0mjryL4-EQA2m5m~LI#@x2n%?%3!gp6^bTtkfi^@RZO- z3@p}7`tX5xwlpbKpKMQYWM?Pf{!+!lBbX;Ez2K&kaEcCdz3z$Zl-Pv$Xq!C>Z+}x;o1lMoVk&oGq><_ z=1zWoJN2AFN&G;R8^iqkur;?c^QSO>I`d~U|5eOCp8015o>K$QslU4CRNiktS=xkX`$ghwxhhElj{hfxIYc2E__@F1wRJMe13Q{3dxZ@NJ`hg+}L z3o>AK1-bNR5qQEK%8w1?2&yWfk&&UO>M}!_KuoQ{kwBvg%hbiIHa~P28Eo!Iev&@b z$+h4}&%=p+k)OKtbxl}UnC`xMVeA2&J}8VITDXKnvZW4&sdGV{y6#4I{YWe?f>b{) z>4g=4fa^o|g{e)1n(dR2yn>suep!zEOgh$j}JaFuW#3HA_OYDlCz z#G~D0qw7RS)~rC}H(=fmIrj-zfa}fWoblQ1nWeI~e}-6yA4spA@d>LhHF5 z#JF7KaMxqE`Y2(ckuF!2394JkJYVMytT>X7cs^>{Pgi^C?b{{jd+A*gJ$vaV_tAL| z-LsEAfCdcUeRN*S=zHkcKUaI_qsQob=lY&G@0aJ_eg{pMFo_B#Po-(o?xGpISN>=0 zk@NmI_QtXHd64(UALTu9tbvv;c}`ykEnBu+UkhRHTkU(VUAs=-^WL&$3vJuBU0)wz z&l~&QSSKAha>TP%3anEC`{@+ePq(_C-jz#oQe3N6aY@Ojb7|i~UvW5FwAY($_>E!1 z=FJ=09Fc9%8%a%?qN7O@ifrFCxhd6a(4tkVE?t^8tVd0gJ5|l5?f4xF&pe%)+QOn8 zR4=-dlY$zMt!X^9>{_3KTkzw2OmZm2H>X%`>!m~2=F~ifqMFvHh|UQim9$@a{!8xfvcf}};=UF>WbnYtFx%=gE^fzvykqH& zyo5S7WMIbSQ@-B2b;Yt4pI`L;m;+Sl%(pcR?~?x1OnaM<|Joml+UzWDwcS3j!FTq7 z8R;Pl>=|Pg@-ZT4=Dkm5#E%&MO<(opw!5BQxb2M@ z?<|ZH{?;S88x7;t)`BL~j&FRQgwcb% z_PDWL(T8kWH%EGhtG92vreyfqjqcrFEm_=gS6Xa~e;nAgZc(RQBVYdG&5H^vDk~QC zy>e~Z@nf&v@i^Ui?BH{EJYLlIATK?L4mGC%tnP6~I^U2tPayt!gzk*saZ7pYZ1H>x z|8H-)m#C=U>vz(Ir!IXfJ*|G@%AG^w9y+ix_`&GuhelWIn{eXYk9Qt>ldiB&-Zwj& zg>9l_en!o^g%&hp>^m%-7$I~yX|HfB;KXGElk)6A~TGFdK(G$F=xS|iAIi_P<#Ib<%q?)eAj5=ap_3z0q zEnFNnyKmWj&8|vHeCnTrmQ2i?^V7DHqlf=B`mHe^4!@#Jp9zO<>%GtZML0Ecv&_=% zlWj+kL()F`a`e>KCe7HlN*mofr|}efyM9x4=8S1j_QgwAy>y`2)%NQTg=f)cY|&CX zJigRky7^3+eWuWcdm3L>GIhs?+Mc-Y3y03`Ugqk5=la&iOE>I#Z2HW0=?x=CuDR#x zODg{N`nHv$7svi_V>p8N1P|-v{~chL|6UL6A`azqi+MNSqkcCBc-Zk{{Py=Eq(S)-MXi_Of*{e}}hX4>6fPo~Yi=;rmi9_%!7&ZN9pzg zc-sR%emi&Pn-kW(KH5!*4DSgC^L=Jxk-Ll7>WQT+t(7rkyN!DUZMVs&9^pE!wkf`bhiS=oW9K&7Ek!=Ffxv_VN7w9d=z) zc=XcVB{9*DYzV*fl7jwyD|a0GbLfaPR&(Rue%hG7X6{XkXFSWup4v1t>ED~DO@Hgj z58mEaGIFhrivGYD_5>l*t3YsIO)p&0yy)r2dJd%xad~@YUtG32vdsQ?cFzEk{QcG~uX+wYl}Iq!1&xD0Y(F-G&t<(npzHD`io98{*jK1iywS4EQ z2iq^1vFfWYM~=FeW5vQJQShfH?%ot?vC^RE)@$w>Zcm;z&qhB!G_H7FY~Ke*FV3EQ z$2C_UeP!X2X3Hk7OH16qX)%-&ccs1bYp%XT%O`ViI?;=q)}MvYt)gqJeeSs62cl;- zjC^k8(s|MS-uhFEqMyR!E~{UD@c6UMuKnbvtrgok?J8T{scheY?Z@52`js4X%$c3e zA}``iKz`+M-N|`WPsCM)A@mMMhhNoTrj0prq9Yw-t3Tpv&u?|ijh;FB&Yhn>*S^=Z z2D`6)qqMMZpGT*iD6>!h@xPCJvAv^ zKe0*@$3E}J!;U8!b0^;qE@wkWtcyFT_?8N4zV+W%+RH!u#|t}c5|_q?!vdWJ6A1qY%g_`{>xFsBZy}Zes<*4`shUv3tWKI;1+ zJ@1;*zVDRQSEp}%%e`vzon`kmD7&xGa}(Drn7HPV_0R0N^WZ&Wez&mK@U_!ADl4#(0rRvgW&bfq*cTHo{7V3zS11_{vemp_1u>4D9lCv-c!x|WaU z(ZBoJO8e`pipSqn=~%L^Vq;R8`}naJ=C9IR`wE{}*nWFqc+t8Ou7_rn76#8wFRSdx zk-i19OXXI5J@CY&W8?G{!DoGD^wie`V_TFo(^my6@89NG7mRv;A65o=x2tp&oB2_1I>dyWmdp2X%xPj$(aOOXJ3TMo9jkrv)vG&? z?cccMqr@qDl7B9k%pEw0sKXwx`aqw5h)L<+9ZcZ*I_f>+6nw40wDPV4&eC)@7Hhc`TvtUa-Cai8gL zEnMOn`QLYb+P3T1pXaYR_U?a2Y?;W*g}mDkuK^T;C>2HG*7YW@3HjE+>!RwqABvti zBmBV1u?IJVCOv#$<Fg&ZwY17FVCHq7S#On*MeV zUQ!jT?~wRooA^0#Y2QA2D3 z1}+nzTUtFSLlAUA+9^hGsnY;}Okx$obdUcRuQ7c#O879w;??K>AC@ z)Xd+KzP8(Dc%(fwTOa6^{*v)C^S7k0?Y0>nX-^=+HG4q%OUBR4-;%zz+h%yAJvCeZ z>+hA%Thf30gDjfysO|XGwtS;4s7rgLKYr~QAnld@kp8Oe_|&$1X^*s5`Xdnk!1(_) z=YY(2IUeMAsqOJu+w!G7(q8G0UvunXTW$OMLYE(izxRI6g&t3<_yh3|#Q)cv16Iew zZ;k#!i@khbD&r;BH)j1->G>C3XvRb0k>7`y`B&0Qc}88Ro8jeO&Y>9(GkUXriO0;I z+U}Ql%;Ia-Z)U&jm+_EzWIWCMA?c+&sZZjO_8DW3x*5G$zr$ka%P~&HN$hr97$63~wO*-rr-H#na56vR}qS#!JRC5PvfdSnHSHYsmPTwavcA zmHhk*tTf|c4ei;dmiZ>}O8@XLqtJ|pq&I6zd1v1uYZ4_MGyJkY5PxgWyVBp*qILGE zB_0`HvvwfkncBSyv*8ieQYN0e8*erm+MPu zue3+5UnRX+Tgo%W0(BWLiPvgd%9Hve9y9#1KM;Rw^S|`BjE9Vu)p$#KDNpK?cw~Id z+JX27;&03WvwV{IdA{4f_W57hced|e{L88}<00pl3+?+!xgRC%k^N@*ZZ?0)c*uD9 zJ3gd5sm~0b?3eZ$V~@J@S0Mg1-ydW=WV{0L_tyi~_~rPP`7Hb8c#z}8tR0BIwfNLF zwT$nD7JoT^$h{fkS`Brx{FMDN-=%-fbz9nJmLHPdU%b*E(qCq684rn1#?#C`NiXF| zeP;M%zqHq1|M|-=?KAU_r1w|9^oR79SzE?K;*;?-vrp1Xc~YMlKG`qr_1Ay?@=N>7 z{3Gf8)i3=a{bkmc@sRjrJk9Kr^irPGXNFJqOMCtGpTGRlJ~RJFdVlpxe@K6swPidc zJ{eCl`{eVMnf?pCU)n4E;^X(rq`=q^+{(R%FZT-?->5oACYuKgrTef+=h!i$>m@Ham4=ON76 z{=WZ^c;)CN;7#{Y#q{^fjR^?6s0-_tXy<|~rlEZ;7)e(6s+zH9c5=JmIbu(pxkdz$$}>X-4B zZAot?U&hbO9@#JX&GcPp{nDR-_pFcP{xag;?Lhp!{bAPf z*I#nH%eK|=B=MNxm;I98s{Xo8U)RUKjE7urn)z3*N9E5SO8K(=YmdMDdr#7Sv$ns_ z=Q5sV`XqfI{{B601ma(F#s$WI&Hf3DfB(jx+5A=8{dIl(%k_!eukhDDa(y6wp89N$ zfBF92?E4?tFUOmFzvZt#PN`Bdv^irN|2jcHNzNLT6+JX3c|2+{if0^|M#=mzy%JD46 zyKGB(Gk*uhzqh~5{3ZL(_xLxv1IqQA#4q@S zhd}(j{qbANk3jqb@i*pxoPW>v{4e(-j95`W+v~Mo`}mjZF}YtR<8SqSgN%oamyD;> zC)<)<%9Hwj?eX*1zCiqc+w*-O{(<-#bD*xz|MGqy+eTYZ_ji80(D|i5Kkx1D zdQa+?@jBaWsqaFMpTGE}KLYXpZO!+A`2V)zE$540d;I0|ptRrLw!HtH?fX?-lPB%< z*ME{<#>-#(r97$6-?sFJzj*69zqHq1|4DusFMs_Z?8Px8xn z`RflUPwMlxE&bsy-nz~&?e*7xl3&K_Z2Logzc1SokJYx-=O?T7$?sjyw!h@_zO=`x zKP0{Mw`^PWhgEv1Pqrmqt8M8o=})V8C4C_N(j(T|GTyRnHQtgw5dWH=r=`DT+gdcO zQ%ilaE#qmm9f*J3j=#(pdH=K;Z!>zizarO9X7>k4Z>CSuOM9h0NiXr5>9g7|{VnmG z>$b#W)gCi?=}+lz84qc{q&L$i>7_iWPtr@gX8Nr5OMgpz=ejNNShdHDUiwq|TgF4$ zFX_$nNqQ+y>XY;mubDop{nFnO-??r}JXY;7qnG}a{+98O_Dgy*eUe_vllmmR#A~L{ zYQOZi#CNXS(jW5saf#Qey;kYv&zDGkxxO^}-p)*(l<#j_`b+v#`ukkRTk4Z|BwlHc zzy2}fH;Y#w{xX98wFB|5`FYJOUuC}>FLFFdfBP3b|G6a|iC5Yq?LFJ=!1(t+rnM+y2Uz{L&uTmh`ph`??@o+AIAb+mhbjwv4xI`zv4aOM7Hn z($|F;)g}hH9+c}xvv`>KPx`aA+h%yAJG31=-SG=@02I89y_BOZwVw zo8gi6NPDF}>OzdpCkFX_mfWA0{xkc1NOHf|EFaA1r9O#A;+6KCPv2e$x~0FQKc&BA zJY;;$;%Sv$>XUdRUTM#T5QFoHQTj{zQ~F!R!)iRO(o203kHjnOIiJ405Ohm_NqOT!K*mGHOQMnSmTgHd z#KF~h59+2^n@sem{yk%R`OLww6k%PmzQg0Wo6oq9XoV+-+Z%0 zd*h8a^#gV2Kp$v8dp30bQW+H$6*`6;JHF%dejN*b-s90n9@C18|H?SO(_VP~MQy?z zlk@|1Tq~aS7wr+IK^wZk>yc5eLFO;TW0ep7gD>BE?|ofA_;0xWCT+;zVfycJ#`S4a z@6r-GC+i35xP~@pKnosV_sH0BPGbU{_uoHPi;HcgWeymm<3ZiZ0UHKn4AOZZ3o@WKm0cG4_9&?47KF%n(Tut$b@X<7;HEbOjc;%pPDe7%|67}3N~M~7+Y_? z@s^$|$eXK1U9ID9*S4dk4q$HGs-4!pU4oXIGeWy|%=P+wgL!85?7!qyub_?Vcvn8N=pOB#Pd}rN zL(EUc`B2TbkO>;lLWYu=+NZzPy<1QHnv#ir)F(`s^ozze=Es>uck41BM;+>(gfp&9 zn|7DBY18L^`3Jg6N=mhb3m2W#qx8+3d5=C<*W_!}S623;KK5}hLi|+DC|L^cjOm3Z zZTs`R_whaTN6YwePoBKMO9U8w81#QnJEVP2|97yJlWYJNdXr98wMbDx@j ze(6|4j$uqdK4d|z${C|hU{LcDu+s+ z>dSAy1Z=>l@<^OnD_8umPhne=r_!PsF@Z+xUUq*VvLct7|L# zzzWR3j#yw^t^M+(x^7pNx%$D$RXH!!wueR zkKCNgv?WWHTEd^2%08^J0e0ZP^ZdxYbGyQ%?x*k-at?7*v^c|7U{xT)c|z(tm-ykw>eiL;A+Sh% zzzpnIL*e-dG{$d!Fcu$t;2~|xmMvbd?yzp_%Xwm?t*$P0R@X)@tX;eAv|NQm*n*D&TO>eb~o@(P$igWnT}XB<2O8u1(J zum$$vZ=}?O-`D(!`4H;{V5x5Ig|6YbBQ(78#Tp6E1qu(It>xI%pH~?(;sZP2XGO1Y zY1wB06IL2VNQbn z+ixF#+T06!fEm6)eqbFh@dE?=rt%8(h*eGa)!eD_P38mc0lx05$_AW)N!=@;UmZpo z;0I>(p(s6=rxL632!EdpSdkNm3C1kiuoE#=aWbCKhg<`l@qi3mSF}bfvJNa5&%gpc zb$|}Iab4lX8Rdr`e&F%H)(acJ`I?zZ5Ouz<=7$cY$6n=bb3LDfq z3-R`a$Lcksepv^ewEhG1dq4I?)~xxD{#*jzV=aNaH}U`z#w;)byLxY;4*l3%s4H}d)CpBpT$zFM6g zU)RlY9{S;bVD!b0YlzFTWiRV%S*&L-9hP&NAF$5Gx~Q~twN_bKsqe%1vOw+g7-KE< zs&z8fF%PgzUw#J$V8H=wD(|H%)y6syzQ6$<<#%;PeyDpr#tm%nRn$I@ajYpF>a3nq zs#^m?C+?dHPjzclCC_-SE|-k?jd6mQBBzuskb$<*mxvki8hr{g+L+@p4wP?voy~H_ zh}l?&|8O6~n#FkEH{!>=Y6#C0z=!9oN2}hAqK$oHtkE&&VGRX)u$IUBQ>@R>R&%w) zjqA_}-M|1WMr>zN$DDu|;9g;jg%Q83<6f(tBamar3#0AmGxIlWQ9f6?f#pmv*F=Lk z8M5JX9A@`8tmUvyKa)Kx$WjM%;9gb}7Gs|pd$^{Gv0v5Ingp^ZPoApB7XHUt$k%#K zf0k!|SLbu%UK8?U^5iM{eGBoznpo*II~y?@>yi)i7V-$=6muv13jAu#CUXgGnb*cP z{0$p$4YIHorE=D6j+EG}v|%HjW3cwd8U@dN(2M)MT6f?%%D5+>#saWnJ&ETq@Tm0) zWc`vcDsk83e?;rRwNIK^r`0tEjyW z$oDlL8?PxE@c3I`ALL;UHR?E%I(Wbf8NalgiJmi|v7#TbgG}I7XJZ}r5YQNN4Ru^Y zpQ6PYSk=`TG-d^PW3)--IIdxz%d9B;kh5r!_ufZMIjQ#0WUOI_x@M*u{qO~_f=Ah{ z?7=ncU-_~Fe7@*$F9(m6d`29=gR{b}FhGYfb_z56ET8WcUgMsdtgHD4a!{B3Qa^Nn z&WJ&cZ-vpyS@}igjhPI^r|g%$H{)0RN{$s9j4?niAjbachu;+@vomx-Cv@YPRMKM% zsYAvOwBS|!DvrMJ0~6>#FLj^|-6+O!3Vp`n%P!?}&_TbMe9%b!(1`*JM(ogMEWY$h zS-#qkseA)@z-$~}=!b5MQ6vA^((h}Ik+wj$!lp2&@u_$4Kaxk$nVoU(GZyJ*6+_@O z`d`Tf4vcAE`i=RA{DN#>c?$a=L&;ZX=s+F1F&7!HgIB8alHZEMr?`~wCGcZ;#K{|GvuQm{!ulW%q%xPe*es1Aowx1s?L zc+bS=W;l>%@H6D8In0<}s*XO;fYvy-n#s4)4||ks=*59j-B>V_&D#U#wP2qjl8<;k ztn5?Z{S18lDBcb5n8SfOu2uK$M)?BYn~<3!zfz#i~I4(fO>gZB`y5p>XlHfWST@lC>L#)p3JfLGn) zmo9luHyQ6l(2xCi*nw~9lwRz&0`ma=)&bYR3%gLqJ4O`6uXv1Sd^3fjcyNYH(7;CE zQT+I}2KQ;~`{KPdXz+l17go3y$8eBskXz-2{JjMcFB8KS48Dj={hW9$C x8~Z@(tH8Dbe%GRWfEeO{Ok6{s%zY^bn6Xa|-(nwK?X%+=`eY$`F~gtZ{{aXr_`d)E literal 0 HcmV?d00001 diff --git a/src/etc/pkg/rust.iss b/src/etc/pkg/rust.iss new file mode 100644 index 000000000000..d7bd716c8ba5 --- /dev/null +++ b/src/etc/pkg/rust.iss @@ -0,0 +1,50 @@ +#define CFG_VERSION GetEnv("CFG_VERSION") + +[Setup] + +SetupIconFile=rust-logo.ico +AppName=Rust +AppVersion={#CFG_VERSION} +AppCopyright=Copyright (C) 2006-2011 Mozilla Foundation, MIT license +AppPublisher=Mozilla Foundation +AppPublisherURL=http://www.rust-lang.org +VersionInfoVersion={#CFG_VERSION} +LicenseFile=LICENSE.txt + +DisableWelcomePage=true +DisableProgramGroupPage=true +DisableReadyPage=true +DisableStartupPrompt=true + +OutputDir=.\ +SourceDir=.\ +OutputBaseFilename=rust-{#CFG_VERSION}-install +DefaultDirName={pf32}\Rust + +Compression=lzma2/ultra +InternalCompressLevel=ultra +SolidCompression=true + +ChangesEnvironment=true +ChangesAssociations=no +AllowUNCPath=false +AllowNoIcons=true +Uninstallable=yes + +[Tasks] +Name: modifypath; Description: &Add {app}\bin to your PATH (recommended) + +[Files] +Source: "i686-pc-mingw32/stage3/*.*" ; DestDir: "{app}"; Flags: ignoreversion recursesubdirs + +[Code] +const + ModPathName = 'modifypath'; + ModPathType = 'user'; + +function ModPathDir(): TArrayOfString; +begin + setArrayLength(Result, 1) + Result[0] := ExpandConstant('{app}\bin'); +end; +#include "modpath.iss" \ No newline at end of file