From 2237bdc595e3d33f941c40108eddfa262c19d960 Mon Sep 17 00:00:00 2001 From: Steve Dower Date: Thu, 16 Jul 2015 16:33:55 -0700 Subject: [PATCH] Adds option to install launcher for all users even when installing Python just-for-me. This helps mitigate issues when the incompatible Python 3.4 launcher is installed. Enables installer builds with the the text marker. Allows simple installs to include a custom description. --- Doc/using/win_installer.png | Bin 46563 -> 48953 bytes Doc/using/windows.rst | 12 ++- Tools/msi/build.bat | 14 ++- Tools/msi/bundle/Default.thm | 10 +- Tools/msi/bundle/Default.wxl | 8 +- .../PythonBootstrapperApplication.cpp | 102 +++++++++++++----- Tools/msi/bundle/bundle.targets | 2 +- Tools/msi/bundle/bundle.wxs | 10 +- Tools/msi/bundle/packagegroups/launcher.wxs | 4 +- Tools/msi/common.wxs | 2 +- Tools/msi/launcher/launcher_files.wxs | 8 +- Tools/msi/launcher/launcher_reg.wxs | 2 +- Tools/msi/msi.props | 4 +- 13 files changed, 125 insertions(+), 53 deletions(-) diff --git a/Doc/using/win_installer.png b/Doc/using/win_installer.png index 8e258927c32ad46be2125cae89f90a770a8c34ba..e5d5e07a1433bc0b9c7ed8929cc8d95437249855 100644 GIT binary patch literal 48953 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�NN@BDE zzc%1qC`(Zh1S~%ei0@!Yt}ZgrK;LyBWneL!rYX9C9#XBRQ9Uyy5v%!jjE%dR^}zXG zfqx$9XYj+Nt{gtrW;R4?$y_asc@*#`vOEYbMFPM&igfhQ3$C^*&P+cJb&DMO<*J~(i8PAZ9vl#%U{>~RR8J1T@z+3S$9XI9EMB_!_bvy!aS zN#PJ@^t(Qv@Avche1HGm;~sbK_iH|%uh;widJDtN=8nTQkjZ)hTKV7L(m~_+z+O$f z*d|lxI6^%f0CAIm(PmOOoIz3cV14Oe^eJ;8X^V>7Xj9j0yB`DPa%-MNW)I97t58~z z47r>C0h;H|HB9X(&xRrSwU+*20!TVY5QZDi(c{~4$LwB~&X-K0jsOEForiPsnymlz zdq)Si--=w(qp?9IkC({Kdz9cJ4Dd!e3MKymoxipQJ^#r1-(SU;!dc;W(S+}#1kzbx z)Xj}9{PU)pONk2U(T2cNcKV+6eUlM2vWKIwip5GG*$sH=1@@)Lzf$=tCAzHdy=j_) z?jS7w5wfbj?CdezY5#fYmDX=wFlwp}Nh-Raz;fw!T0Q1!r`ybM6V~p_O~FK0eYtIs zgpdODcPszhyS?2SL**mg=@z!X7Z_s-KZZl%p`g6omYjA?Cvf#ct8>PX>kbc$^yLOG zpL09se4&lT3aJa!LQh4woQq6*|Mwl%kz4CC?={yK-IYrKveli%_F&V9#KHJIBLXM< zC#~tTHB@1+g*IXBrgu1zw09G5-@8SNLrBZ)xwh1#(?`BUE$+z%RyD@l25?by--Pvs zxBLj<=)WsvU+hv&U@ni^%#%FF610P+_7?E|xnLN%4rdK&!prNSrpG@22CT4sRllG+ zT6yIdr(36-`A4vR^gwGl>n)jjv-__6$sa3}OJ$XPL=p}ogPP`Aj)w2H?k#;kIAMOU zBw4m&`7D+e_OTF}`>0rKWM|K3-}T^gSLmvj*4E42eUBBJ;@sGjE6BtF=~gQ)-F$;@ zPkKsF69Q(H$ZQ45?{f)y8Pof!2}Ad5-a~iqR)+ts?fU4pJ~M=HXClsP?I$=j<41{Ar)w;B_3bO9@aIPdEl`&VC#V(T%QLY%} z0=LsI_HC)p$22^=vh7k4N;_^KEcMyYoe8&OcJul5Uw!k<1AEA~8~4a#+DQhjPc_Pk zg~cso6~!+r2N0rinDh3#jDF3UK-1I`^qLXY?FaSdNO+<=O6ZWk;-OdjfuWGUK!!1Q6qpWgtWFycOWFDO6nRZJvwwYZ`MGXX+ci=~M42wx zczb`v8(+WIK{L7^x3};XsM)C3%6x#d&oj7+BD%P?Ki%6X?x(~x$y&RaZg2#e%R)(hz4#aT+!SQCm)Tc{!`K)) z#Y<*{Z3Ju2Okl|M88x%*eJym(S0X|4Z&!*wzXnbYc=(LpSYJLEj|?eC8t0)cBg+I! zpBbn&JXI#i@-`v1X;$Tr*{JY0TH z!7fka#?o3Q6Ac=XWl58s>$wHD9o_6AXCU3F(5}Gxjwp`PNdsQ%B7V!ld0ww|7s>aP z_};cVHlk`jZD=0eqY`UKTY73frmgLS!?5imclY(&hQrxS1Zh0~cU`|`T)@4WZ^6}` z5m(#9Ec*5DcT`6HF-y($2x_plHRgZRnJ>5!F{Cg%tWUPgk8It`>UStWvHABAXSQq9 z`6#S+cQ7B>pDLm^!w4+#pleMHCZC=e8FYIN8sc>}TIkBs zk>u)T67$116v^+;%`#GG>$g?5dfIc}r>Z{cK1-|id#{Na%CT>MII;b+S<^4EaeRHO6}2m$HnsPfiuhINfqSsWZ~Jx)QsK2h5i;A z+552g@#DSI8%zS^j4uUmwd-B0jo$kWFZhU>=gcO)U08EfI4ln+g{Mzt8qqg3Jnk`k z;E7@()n&Y0dF$gC(_=-D_Mq6u_Jt|&Iucum6B}h>`ws(NUFt)UZ(YF^WqDPwzeuB< z3S3$pa?BY(-f4V_?E7tEYx%cb9N_W~lP>DJbDWK}kLgaK<^61P;mCtu@A4$)4rZY( zqkdR^NvpZodI@AuWde!=$Zd}XZ+{FsUC(Hm+u8Wg81s^L8{xBWNswZzmHAnu4kUK+ zzjCSiy?dpD4NRYZ4Me?$&EO+Bc|ybRJ; zZuxsRRmUeFO`Xg!Yv>Nf8LeG0{mJD|i^_8u@+G5|L*%(Fr z%His~y~$W<*m@2Wow<-y#ZtB z7X;LQiR-3qNqfIy*-77RgA>5|_ctZ{evX})Y z`7B*ps3C{vn|Ap|=)6;+I^X}Eo48~Id(_hY^P?71T0m7`^_4b_)ELtFy9a-;_K!K~ z^+mx1C0Nkrn9+vy&k|Jb=v)?9ZLE@o z1le?lE*-Bd$13jq8p^`R_T7K*-ZOXh)`F;S$>#4}(b|cXgloU6+wZ-$b%TCmAz|NVu5Q;XvFUYACR`km8TwgAtv!@j-_dvb9h*ssBEIvdss zP2LU;bKF?|qNn{nAn9F;Qg>IRoG;b8|K*n&=%d1b9Hd0P!KBiSsqSUX(4EwC4Q2C=z#1>}tJxM+wNe$lQFKi7} zSCR1_^+D;MZXT|qnb+8TgSROS-m0Maj;Z^^e=&4FhI@OaEgrWgIeog{#UzDn-Hy4G z)R^~N>D@M=zykDD-ZORqJaeh=+aRpCmxb78<#>t!vgUxIRgJ)z}ztVi{D*2lS)nAra* z-h?WxFlc?*YZtZ7kPHvv1=y)u+k53qM;JvM+4lQ1kCUSb<9k9Q!93=mSRMh!$2SLV z<=5D_=1hbAk5@R!yE;Yo3R}Y`OR$lx$?Q168%)IdA=(afw)L=0LzDXXKiDYqQiqR+EKT&u2uo`6g#4X#F6A$<+?Y4M*FO7I?{3M>81E7LRoz;f|( zp&$lG%%!Pubbu09)t|u~nt#=SYx_P{`9?jjXTXzj?Oxm87dmEkpXO)%_+-tsJGRjN z+c0}<034}DzP|DzX%%>iqA7LP{Ns@USFqD5W%@^oYv0K`4QAqz)Ee(lx> zr#R>5SmoYMhoNll~GSFuS?$cxus?%o@XxH(K^3?2lMQfEN#o zVKuCdlAa6OPYc!bi=|Slq|($5$1X)a8fwVT3+$Tshp%8I;EiX-s%#ildgq=XiWqt$ zIYO7y8bRs%+wSHV)%n%STx(ssl~XbqBdZT0Ka}Fs6tc^EK%+Lz|Jw!{8H#ad1*rLR`^7J3hP@Ebu{#5RT`b6X@Ewzz za}hZHoU}%a`|Hn~p^n>BNeD}jYrAraYRiY;TS)Ek&cJ@ni7w5-M7q?W1*kLr^T+7; zYId_|m7f@NRsB{IDLt}(n<$k{!Cb+(JsK2%lr1!Nwp(eOv_Gy;pjeplFKeZH4BnXm z%`EBdTV=Ui$jffNNTj`d^NOR_{6654KXh?d*zEIB6dm75GQe!t7Fk2i!QZDW-gsU4 zm!vh8jzf&;h$igLN+tR>`O8tlBync1JL2l=9hjNDLA63~fT+u}SB|1Qkg&rQ%~Q^F zBTT8<8T0$cn2MOqfEWPSncMza&ly>CVfc=RWrt0TSOfTEoumZluS@ga2S3*EY>XKt zeiDM4Txaah_NtYq3tgA>Pfmf;0l2K>0YcZ%p4Z`I=W{ddRI*OXebKZ_&+TwL@T_$Z~?$-Qr2pHD6#&izZ7u2 z!spz2E|8A;B@aR$nM(bdjJ^MyGwbEwYnWxE8#qonXr6d(?=mXqoCB|ZiEljWbC8cm zNj0W>nXEB+t%USoYU0}X>J^gi%^LZz|85-sf^Y*^&Ya-u1u$9(zs7%0Iaz}~eaAu= zZv*~lAdI*J)|v#t5Ylcq?|fcZz%O%)zWk2Lwm&7J|7!pu-hGTgn-_G*j^o>3r@m=+ zY7V!fuOY6Si!8Nv0A~$=FKiWJUrm)ISRMRV0wBN~a4ykVn8Tk1fqrPibOvL(&2Li6 zsO4%(kz)%17+9U&!wo3kW!KOZQru|)qb&B4?^B@KEaD=e&M$_@nPZmKu8 zzp>*Pr>GaSBm`d#Q}lPRl_xh2wK8Q-f6IL32!1s+`Q?8*ecx6(c`rK$A2UDO31E|0 zD9=DVgE^-iff8Py5I`MQ003>|*w`m$cR%Xfjxp{3SqHwcN6kahDdS(B7IAzf7nHk; z9*oZqUwJRfM9gmKZslYsc=ID%ah(Q)ZD+sxKS4Sc5Dk#Z4zIEYv8GNQJCQ@&tICh| zbFSZ$Fx)}nSSl7rJY@^s2>|8=6PwPv19LT3_(Gova_QP!kGV>>@=c{dVGK%sa4*Lx z^ZpsjL8x}pRhR{BH zuQq|ut942LbVt`AfAjjL`Q6Od<9TBsUn-JBfn(H#W~ZMjMIgiHaBI~%UQ ze~-9-`1VVv>q=Lf-5L-4kHI1=l`!=W2rRj=j|d`n`ZOm}>46YSY)hZBeK#-Nzg_cx ztW#fhnhBC)_w(jAJ{3@gn;jEje5=IqiIL7>szHUr=^)U#=;M9xTS3=Wx^8atw@9`e zeJ?;A^PeAyCb%|I8#>je{x0dfrRzIIJF>F~!J~3Z()ophLP3LtuXDrRwE*@Y*KLcu zKsMONPXcVZrSH*Pvo_l^V3_KhQ9E2<&i4OkKp4$SoiuHKOFe6)<2AnO^53-<9KXyU z1Vl7}OwkrjDHlZT`Z$8Lz6_K$RsSg5et&60A^nP_vL(~`Ezuv6yX&&$gSOy)X)x}f z39`3Ywc~){{r{8zf^DehNBQ|Rrceou^Y-8FbE^d3{7g`Fc}e5`3#6M>JML<7RYsL5 zt|`&JG>0#V`vkn&SrgibP-Bj?_&D!0uILJ^uYY z;XK%(S4ze7?5lnYz|VT5b_eim&0Py=tB`w>k+V@zW9oFk@KzP=+7vA~dF8Qx`U|)9S0+xbgf9>L<`}yb{s?bX{M5#yyhnmsrn6B0o(Q~BD9Hj5R5i_7VIsGg| z7PrfjcXz~maLqUEbCJVys$5Avw&R7tTXU?Z0Af697*>5Iw@&Fg;mgN*3mg<&>U5hF zYPwx>_8X98oGgXOXa?tbmzVeV{Hh1I#K+LQhV(q8;Eh&HM0HnQ6&~H=JXH`2Ky%=V2IQ%+HtotXTQie7F!~w0|L>PF^|J_rz?3c3C z!PdQ&zCp9Dxj15_mtlbnIBYsPD7N?F`*gMaN9ahzz4a#5-%kulc2K5dC|3Li0U3ea zM*2=skap?8m-7<%&F}`z*BK>7fnu3Lfb;u2XZY-5Oeq*%O#Ixnf-ICw+-c=)A(ld1 zXjMPZKU|xXd9p7Q|!zWq`wqer`rt4mxSA4OwAn{$Y4@p+@ zT!sF0BKk(9HC;N167exunn+u1vpjkcNthl~O~%qyE&WH;2o^a8N%SL}Bhh~nbZS5P zylWY8eR%w1i{cXBg!2;j6Z3Hcg-qDypkbICI3FaJ3)C3%;5SpXQOKp#@V6fb6I%+^ zEB)0&yOIY^Eqvl@IPVGCPiw>Pb(>K{>JuXl4*m193JZZAWa`U>H6Qx1WX zOW1I-{a-%Sy$=(GEf3WxeuBNA2Mr(tM%oU4zTheF6heAV8X#@8?Om4a^WDqX;ZbI) z@%l$0==~}83NZxB`uleLQ`LzQ#c`lII*p=-Dim;U5$+5G5X_7h&gcQUf=xn> zx6HK;rgxk!IA^FvCs!@GQ}G#4cY8sxUoA5B+VtS>AiKF@ufSX<3^Rz@p_Y5(7;eJ^ z=xP&z+xd%h9Nxs=Xm=>nnjiORoNj-wkaIO6@_Sv2;h@6w%R-v8X4u=7EoT|JyRyxT zv2vnJzB@^n>D@iFzm)W0ds<7sI^~>u5zgWO*DqI0*~^U1`b%X9enNueG>W z&>{|p!z|w7&3;r{+&k)vM5id$jea{ot)<3zJ>oC1sg}hXVIf-3O^AH#a(i+*2QF@t zwsVKdf;&-`w*sZbiZB8FvS$VPvmo~%OkXxZ9gKrRANFa?GiYPy za`CT&FwkHnE4V5*-s*{dmZCYpq?YRx_xpB$0n?p3$pH>$edLu}-UQs7QxVfr8wBH;!|)CJfbC6cfI;bz@~!ksCor^#)fDVgf0imCd-Bb-}hVtGWQ z8rhVrb_H$`B`y}a1Pl?xaEh}Bs$epL1RH46!YWAN5Ed2dA zdo3ei;wOSZ&d3dO5qs5#auRLs)R|8StRBpdYy!mfi8DNe1bXD4UZ{>`WCosXDlai< zm8b>6?<4f$U&5XxtwRcRHEqAeBDfMNmdtYmWa23svwtJ3xEEX%?MvQ&R5I-1i%jBothAQ z;@lZcE62T}4OMGx4$IgSVil!$dn`EDesu#ghpkk@ayE}AEJXCO`d=e~iPCd$ji7Oa zWi_5oV-Mc3<7lmCdfusKG{1v7R*97>!EhN7geg>3jUn5^?+X!%*TnZh7X6tm9kiFa z-%~oo^27V+p6`Gv#M$>71h;b1rS|tR%Rga(55R^tV1Q#TJxCK1MVkdQ^ymtk+Xx8 z3om$9G7(!~IrlLDkSC_CQi3X?TE5HcZz;G+*2u5liMUpBgqC#M369d_bgNF=wD|H? zqRh#*FZ)5u>8^p%oPunF=vDYn{Kaj_nfi0l@H6JK3{!K?MjDXP9CClE2%j(VDhU0 zRs<#D)xhuiC$2#_Rh6>U=X)#{ZkXwH$D>B=gY5TLygN~c+ZqGbqoeIt?s&Xe$uAOv z9_@G~ZwB`}Nxyh~65`&rXF94IdG^!I2lNEQC>0&gqKe1h(N$6x3Nl(WTC_>u zsHLF^A&25YGPpoVC_|p@{*Y*(6YzKdy6kxN;J%#!xM zTc7t)z}|AqK7Ci&_ZvJOUX9cc@X3VqZ53XvxYJdUH$9v>2@0u{+tgVuVaj9lclE8) z<8T%jj4$g68>#xtBti7u` zCh|6dlHy%NYg7-v8RpTh72`JIETSl>u|k#bzq+uyn%R@Vml2r?zr?}_pa+k-#d1E` z_EWiG$~`W&<8-#O4zgk4yj6e>pPFQrW00!j+V{p>a+T8_9Kt6^8HTO&SOLzT+oz`n z%2+HN>MaSH)R~=K`<{{$g%+8U-;JQu1wHi~gfc=lSPOVjIgz5Fy7xXMTXm+itl9*% zLre)5*X%z~-!c)F({%z~Lo)`B$?SKnhCrZlt24)I0vM{Z!I5Rm5ZlS?d6cn|$!b09 zkUcs0+{XTj30}P>gfr6pwCC*H9wY7tDQ1d)c$wrh9=V;M+S0y1mibDlY^vja#eLof zUTcaGt$ukmztj_5a-#^_s%2MyEJL&$nRU*Pu&C*cQG%c+s{QoQy!l}!rNd@4{}YXr z#V7bHg{j)@dL*uKK@_swxr%PeCwtUXd|i0Asyh9eviCV^;LptndN7L?at4%g3jqW( zVXn8PCWglW7k<}gfF2iDm09OQIP0!{7C}t7QW$f;^P1`P;dvsBcZaN~O!R;~u^byp z0Khg-+7WA3>-|)Pf|MxQnbUc^dFohgoM4t3`I%Opo$JzO_}2rTxa(Hp3q#7-7~vc( ziUwD8tQF#04J4@w-k`bd#eKUX>}QcWm^eg4Y58rgYLn+Vjv~3XI^`6)`8Es=M?yF> z`EN|;v;^lHo-U3lDX!wu3ot#|GYab64Jfoxnrad^GjqcMLQnQ+9Eq-3F57m!tkX({ zp6McCYr^}tgx_#l66-b8ekC<+csZTx7~7*m{X2A9uaAS&lBjoxucSzy zSv?nqT*M0Y;o9E8M?tvWLVkvn;mcSxC!MIDH&e?8>O&%8 zg2AN1;qlVU-@0Uvd@rY*4mVq75+24WL>OXz&3{JeO;&B(ZMY-50COcc#0GgMO8Xg_|)isdbK=8 z-}0P3_X(APL<}S1{8|^=9TBt#S~i+>zw3;nf={2m2{>oKU2`F`f!8=oQFXK|Z%+fM z4Y<(e8eep^?#*Xh$0zkpjtXoMKAsDZHx!XhE!&?>CvWyw)%eaEub31&48}tZZF*|L z`(Q*^&l`a^5~CH$WXm;s!6|-2iM;zs207hBHhm>^D;2q2>v}>{$&n3XGn4MRJ&ZV` zwa3?fCTX>WX`3~YW=j<+&dVF#{iM^eQ9epxCPq8!l2yU*Tz_heDJ)$b86$il5<$+rQ&#UvgGd=4QS+Dp^>;^Db$V{XaF@ z*;cfwX4LKNc!PPaeqpv!W>-K~YE>;f^E~8r4q9?;JX0~%&UoS-BoZ+VFHV9kXBKlB zPF(*?b$p6dU;MT-5dx1Pdwo)U*t#8?Fld8)UKOrb#I$Uy(_V;_XyuIC)9`r>B?e$E zovh#YXhy9Wgsp1UpIzmq!zTtY02tUQB9)z{I)&zxI{E(H(sBuRnc(-QCqag1+4$0U zQ;d<-DD7>L6tM<*y)cdTM?k$ANaYg!D`sxZ42K3fw1rAD3pXxR77)$njA0Y^h zKIPS}yDF|aDt`L!@lL{jr~{gtkL3&y3}itgglhpdCoTXuqcfPiMO1iFSpu`gR+*pD zxW_7=u{y_%34w&07N6&Ze_*v&Y01*Lov($KdG{2r?k9PGpicIc4cdbL)I0+jmAsbK z3;K-)xMc>;>pNwhGP4)k5`rk8w;=zu#7ji8|ss4;wO?}R;C`- zXBTRd%Ve>+qYBKVXOUA-t-oJ$xJpNPvgQC47A*i9CJ}*YV&S2jWQjL75_hA?#iCE` zSm#jU3QcmS7!?*zV%7Fk*Sak7$)tDeDD(S)t~(e}O5FzY{bJ_TY5*g`tt<-wv26&*Cz>)BBQ zSIY303eGE0%0|*v?-bQ^C+to1EDqaiC=D8&D*(>`!-aQnuXBMKHE04bPZNK(|ClWP z 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 F{{UqN?J58O literal 46563 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 diff --git a/Doc/using/windows.rst b/Doc/using/windows.rst index 8e3c1103dd33..213912feb378 100644 --- a/Doc/using/windows.rst +++ b/Doc/using/windows.rst @@ -130,6 +130,9 @@ of available options is shown below. +---------------------------+--------------------------------------+--------------------------+ | Include_launcher | Install :ref:`launcher`. | 1 | +---------------------------+--------------------------------------+--------------------------+ +| InstallLauncherAllUsers | Installs :ref:`launcher` for all | 1 | +| | users. | | ++---------------------------+--------------------------------------+--------------------------+ | Include_lib | Install standard library and | 1 | | | extension modules | | +---------------------------+--------------------------------------+--------------------------+ @@ -145,6 +148,9 @@ of available options is shown below. +---------------------------+--------------------------------------+--------------------------+ | SimpleInstall | Disable most install UI | 0 | +---------------------------+--------------------------------------+--------------------------+ +| SimpleInstallDescription | A custom message to display when the | (empty) | +| | simplified install UI is used. | | ++---------------------------+--------------------------------------+--------------------------+ For example, to silently install a default, system-wide Python installation, you could use the following command (from an elevated command prompt):: @@ -152,9 +158,11 @@ you could use the following command (from an elevated command prompt):: python-3.5.0.exe /quiet InstallAllUsers=1 PrependPath=1 Include_test=0 To allow users to easily install a personal copy of Python without the test -suite, you could provide a shortcut with the following command:: +suite, you could provide a shortcut with the following command. This will +display a simplified initial page and disallow customization:: - python-3.5.0.exe /passive InstallAllUsers=0 Include_launcher=0 Include_test=0 SimpleInstall=1 + python-3.5.0.exe InstallAllUsers=0 Include_launcher=0 Include_test=0 + SimpleInstall=1 SimpleInstallDescription="Just for me, no test suite." (Note that omitting the launcher also omits file associations, and is only recommended for per-user installs when there is also a system-wide installation diff --git a/Tools/msi/build.bat b/Tools/msi/build.bat index c135b63d218f..5ae512fbbe4b 100644 --- a/Tools/msi/build.bat +++ b/Tools/msi/build.bat @@ -6,12 +6,14 @@ set PCBUILD=%D%..\..\PCBuild\ set BUILDX86= set BUILDX64= set BUILDDOC= +set BUILDPX= :CheckOpts if "%~1" EQU "-h" goto Help if "%~1" EQU "-x86" (set BUILDX86=1) && shift && goto CheckOpts if "%~1" EQU "-x64" (set BUILDX64=1) && shift && goto CheckOpts if "%~1" EQU "--doc" (set BUILDDOC=1) && shift && goto CheckOpts +if "%~1" EQU "--test-marker" (set BUILDPX=1) && shift && goto CheckOpts if not defined BUILDX86 if not defined BUILDX64 (set BUILDX86=1) && (set BUILDX64=1) @@ -35,22 +37,28 @@ if defined BUILDDOC ( if errorlevel 1 goto :eof ) +set BUILD_CMD="%D%bundle\snapshot.wixproj" +if defined BUILDPX ( + set BUILD_CMD=%BUILD_CMD% /p:UseTestMarker=true +) + if defined BUILDX86 ( "%PCBUILD%win32\python.exe" "%D%get_wix.py" - msbuild "%D%bundle\snapshot.wixproj" + msbuild %BUILD_CMD% if errorlevel 1 goto :eof ) if defined BUILDX64 ( "%PCBUILD%amd64\python.exe" "%D%get_wix.py" - msbuild "%D%bundle\snapshot.wixproj" /p:Platform=x64 + msbuild /p:Platform=x64 %BUILD_CMD% if errorlevel 1 goto :eof ) exit /B 0 :Help -echo build.bat [-x86] [-x64] [--doc] [-h] +echo build.bat [-x86] [-x64] [--doc] [-h] [--test-marker] echo. echo -x86 Build x86 installers echo -x64 Build x64 installers echo --doc Build CHM documentation +echo --test-marker Build installers with 'x' markers diff --git a/Tools/msi/bundle/Default.thm b/Tools/msi/bundle/Default.thm index 0c79dd50c029..4ba817642a14 100644 --- a/Tools/msi/bundle/Default.thm +++ b/Tools/msi/bundle/Default.thm @@ -21,10 +21,11 @@ #(loc.InstallMessage) - - + + #(loc.ShortPrependPathLabel) + #(loc.ShortInstallLauncherAllUsersLabel) @@ -43,7 +44,7 @@ #(loc.InstallHeader) - + @@ -63,7 +64,8 @@ #(loc.Include_testLabel) #(loc.Include_testHelpLabel) - #(loc.Include_launcherLabel) + #(loc.Include_launcherLabel) + #(loc.InstallLauncherAllUsersLabel) #(loc.Include_launcherHelpLabel) diff --git a/Tools/msi/bundle/Default.wxl b/Tools/msi/bundle/Default.wxl index 19ba7eb14b0a..c12fb65a2e15 100644 --- a/Tools/msi/bundle/Default.wxl +++ b/Tools/msi/bundle/Default.wxl @@ -50,7 +50,9 @@ Creates shortcuts and file associations C&ustomize installation Choose location and features &Install - Uses setting preselected by your administrator + Use settings preselected by your administrator + +[SimpleInstallDescription] &Upgrade Now [TargetDir] @@ -81,7 +83,9 @@ Select Customize to review current options. Create shortcuts for installed applications Add Python to &environment variables Add &Python [ShortVersion] to PATH - Install as &Administrator + Install for &all users + for &all users (requires elevation) + Install &launcher for all users (recommended) &Precompile standard library Install debugging &symbols Install debu&g binaries (requires VS 2015 or later) diff --git a/Tools/msi/bundle/bootstrap/PythonBootstrapperApplication.cpp b/Tools/msi/bundle/bootstrap/PythonBootstrapperApplication.cpp index 21663041378d..2d8f04d9d59c 100644 --- a/Tools/msi/bundle/bootstrap/PythonBootstrapperApplication.cpp +++ b/Tools/msi/bundle/bootstrap/PythonBootstrapperApplication.cpp @@ -87,11 +87,13 @@ enum CONTROL_ID { ID_INSTALL_UPGRADE_BUTTON, ID_INSTALL_UPGRADE_CUSTOM_BUTTON, ID_INSTALL_CANCEL_BUTTON, - + ID_INSTALL_LAUNCHER_ALL_USERS_CHECKBOX, + // Customize Page ID_TARGETDIR_EDITBOX, ID_CUSTOM_ASSOCIATE_FILES_CHECKBOX, ID_CUSTOM_INSTALL_ALL_USERS_CHECKBOX, + ID_CUSTOM_INSTALL_LAUNCHER_ALL_USERS_CHECKBOX, ID_CUSTOM_COMPILE_ALL_CHECKBOX, ID_CUSTOM_BROWSE_BUTTON, ID_CUSTOM_BROWSE_BUTTON_LABEL, @@ -150,10 +152,12 @@ static THEME_ASSIGN_CONTROL_ID CONTROL_ID_NAMES[] = { { ID_INSTALL_UPGRADE_BUTTON, L"InstallUpgradeButton" }, { ID_INSTALL_UPGRADE_CUSTOM_BUTTON, L"InstallUpgradeCustomButton" }, { ID_INSTALL_CANCEL_BUTTON, L"InstallCancelButton" }, + { ID_INSTALL_LAUNCHER_ALL_USERS_CHECKBOX, L"InstallLauncherAllUsers" }, { ID_TARGETDIR_EDITBOX, L"TargetDir" }, { ID_CUSTOM_ASSOCIATE_FILES_CHECKBOX, L"AssociateFiles" }, { ID_CUSTOM_INSTALL_ALL_USERS_CHECKBOX, L"InstallAllUsers" }, + { ID_CUSTOM_INSTALL_LAUNCHER_ALL_USERS_CHECKBOX, L"CustomInstallLauncherAllUsers" }, { ID_CUSTOM_COMPILE_ALL_CHECKBOX, L"CompileAll" }, { ID_CUSTOM_BROWSE_BUTTON, L"CustomBrowseButton" }, { ID_CUSTOM_BROWSE_BUTTON_LABEL, L"CustomBrowseButtonLabel" }, @@ -261,10 +265,11 @@ class PythonBootstrapperApplication : public CBalBaseBootstrapperApplication { LPWSTR defaultDir = nullptr; LPWSTR targetDir = nullptr; LONGLONG elevated, crtInstalled, installAllUsers; - BOOL checked; + BOOL checked, launcherChecked; WCHAR wzPath[MAX_PATH] = { }; BROWSEINFOW browseInfo = { }; PIDLIST_ABSOLUTE pidl = nullptr; + DWORD pageId; HRESULT hr = S_OK; switch(id) { @@ -278,7 +283,7 @@ class PythonBootstrapperApplication : public CBalBaseBootstrapperApplication { case ID_INSTALL_BUTTON: SavePageSettings(); - if (!QueryElevateForCrtInstall()) { + if (!WillElevate() && !QueryElevateForCrtInstall()) { break; } @@ -344,18 +349,32 @@ class PythonBootstrapperApplication : public CBalBaseBootstrapperApplication { ReleaseStr(targetDir); } - checked = ThemeIsControlChecked(_theme, ID_CUSTOM_INSTALL_ALL_USERS_CHECKBOX); - if (!checked && !QueryElevateForCrtInstall()) { + if (!WillElevate() && !QueryElevateForCrtInstall()) { break; } OnPlan(_command.action); break; + case ID_INSTALL_LAUNCHER_ALL_USERS_CHECKBOX: + checked = ThemeIsControlChecked(_theme, ID_INSTALL_LAUNCHER_ALL_USERS_CHECKBOX); + _engine->SetVariableNumeric(L"InstallLauncherAllUsers", checked); + + ThemeControlElevates(_theme, ID_INSTALL_BUTTON, WillElevate()); + break; + + case ID_CUSTOM_INSTALL_LAUNCHER_ALL_USERS_CHECKBOX: + checked = ThemeIsControlChecked(_theme, ID_CUSTOM_INSTALL_LAUNCHER_ALL_USERS_CHECKBOX); + _engine->SetVariableNumeric(L"InstallLauncherAllUsers", checked); + + ThemeControlElevates(_theme, ID_CUSTOM_INSTALL_BUTTON, WillElevate()); + break; + case ID_CUSTOM_INSTALL_ALL_USERS_CHECKBOX: - hr = BalGetNumericVariable(L"WixBundleElevated", &elevated); checked = ThemeIsControlChecked(_theme, ID_CUSTOM_INSTALL_ALL_USERS_CHECKBOX); - ThemeControlElevates(_theme, ID_CUSTOM_INSTALL_BUTTON, checked && (FAILED(hr) || !elevated)); + _engine->SetVariableNumeric(L"InstallAllUsers", checked); + + ThemeControlElevates(_theme, ID_CUSTOM_INSTALL_BUTTON, WillElevate()); ThemeControlEnable(_theme, ID_CUSTOM_BROWSE_BUTTON_LABEL, !checked); if (checked) { _engine->SetVariableNumeric(L"CompileAll", 1); @@ -416,6 +435,7 @@ class PythonBootstrapperApplication : public CBalBaseBootstrapperApplication { case ID_MODIFY_BUTTON: // Some variables cannot be modified _engine->SetVariableString(L"InstallAllUsersState", L"disable"); + _engine->SetVariableString(L"InstallLauncherAllUsersState", L"disable"); _engine->SetVariableString(L"TargetDirState", L"disable"); _engine->SetVariableString(L"CustomBrowseButtonState", L"disable"); _modifying = TRUE; @@ -437,35 +457,36 @@ class PythonBootstrapperApplication : public CBalBaseBootstrapperApplication { void InstallPage_Show() { // Ensure the All Users install button has a UAC shield - LONGLONG elevated, installAll; - - if (FAILED(BalGetNumericVariable(L"WixBundleElevated", &elevated))) { - elevated = 0; - } + BOOL elevated = WillElevate(); + ThemeControlElevates(_theme, ID_INSTALL_BUTTON, elevated); + ThemeControlElevates(_theme, ID_INSTALL_SIMPLE_BUTTON, elevated); + ThemeControlElevates(_theme, ID_INSTALL_UPGRADE_BUTTON, elevated); + } + void Custom1Page_Show() { + LONGLONG installLauncherAllUsers; - if (SUCCEEDED(BalGetNumericVariable(L"InstallAllUsers", &installAll)) && installAll && !elevated) { - ThemeControlElevates(_theme, ID_INSTALL_BUTTON, TRUE); - ThemeControlElevates(_theme, ID_INSTALL_SIMPLE_BUTTON, TRUE); - ThemeControlElevates(_theme, ID_INSTALL_UPGRADE_BUTTON, TRUE); + if (FAILED(BalGetNumericVariable(L"InstallLauncherAllUsers", &installLauncherAllUsers))) { + installLauncherAllUsers = 0; } - } - void Custom1Page_Show() { + ThemeSendControlMessage(_theme, ID_CUSTOM_INSTALL_LAUNCHER_ALL_USERS_CHECKBOX, BM_SETCHECK, + installLauncherAllUsers ? BST_CHECKED : BST_UNCHECKED, 0); } void Custom2Page_Show() { HRESULT hr; - LONGLONG installAll, elevated, includeLauncher; + LONGLONG installAll, includeLauncher; - if (FAILED(BalGetNumericVariable(L"WixBundleElevated", &elevated))) { - elevated = 0; + if (FAILED(BalGetNumericVariable(L"InstallAllUsers", &installAll))) { + installAll = 0; } - if (SUCCEEDED(BalGetNumericVariable(L"InstallAllUsers", &installAll))) { - ThemeControlElevates(_theme, ID_CUSTOM_INSTALL_BUTTON, installAll && !elevated); + + if (WillElevate()) { + ThemeControlElevates(_theme, ID_CUSTOM_INSTALL_BUTTON, TRUE); ThemeShowControl(_theme, ID_CUSTOM_BROWSE_BUTTON_LABEL, SW_HIDE); } else { - installAll = 0; + ThemeControlElevates(_theme, ID_CUSTOM_INSTALL_BUTTON, FALSE); ThemeShowControl(_theme, ID_CUSTOM_BROWSE_BUTTON_LABEL, SW_SHOW); } @@ -1839,8 +1860,8 @@ private: COLORREF fg = fnt->crForeground, bg = fnt->crBackground; *brush = fnt->hBackground; RemapColor(&fg, &bg, brush); - SetTextColor(hDC, fg); - SetBkColor(hDC, bg); + ::SetTextColor(hDC, fg); + ::SetBkColor(hDC, bg); return TRUE; } @@ -2080,6 +2101,7 @@ private: for (DWORD i = 0; i < pPage->cControlIndices; ++i) { THEME_CONTROL* pControl = _theme->rgControls + pPage->rgdwControlIndices[i]; + BOOL enableControl = TRUE; // If this is a named control, try to set its default state. if (pControl->sczName && *pControl->sczName) { @@ -2091,7 +2113,7 @@ private: // If the control value isn't set then disable it. if (!SUCCEEDED(hr)) { - ThemeControlEnable(_theme, pControl->wId, FALSE); + enableControl = FALSE; } else { ThemeSendControlMessage( _theme, @@ -2110,13 +2132,25 @@ private: LPWSTR controlState = nullptr; hr = BalGetStringVariable(controlName, &controlState); if (SUCCEEDED(hr) && controlState && *controlState) { + if (controlState[0] == '[') { + LPWSTR formatted = nullptr; + if (SUCCEEDED(BalFormatString(controlState, &formatted))) { + StrFree(controlState); + controlState = formatted; + } + } + if (CSTR_EQUAL == ::CompareStringW(LOCALE_NEUTRAL, 0, controlState, -1, L"disable", -1)) { BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "Disable control %ls", pControl->sczName); - ThemeControlEnable(_theme, pControl->wId, FALSE); + enableControl = FALSE; } else if (CSTR_EQUAL == ::CompareStringW(LOCALE_NEUTRAL, 0, controlState, -1, L"hide", -1)) { BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "Hide control %ls", pControl->sczName); // TODO: This doesn't work ThemeShowControl(_theme, pControl->wId, SW_HIDE); + } else { + // An explicit state can override the lack of a + // backing variable. + enableControl = TRUE; } } StrFree(controlState); @@ -2124,6 +2158,8 @@ private: StrFree(controlName); } + ThemeControlEnable(_theme, pControl->wId, enableControl); + // Format the text in each of the new page's controls if (pControl->sczText && *pControl->sczText) { // If the wix developer is showing a hidden variable @@ -2405,6 +2441,16 @@ private: } } + BOOL WillElevate() { + static BAL_CONDITION WILL_ELEVATE_CONDITION = { + L"not WixBundleElevated and (InstallAllUsers or (InstallLauncherAllUsers and Include_launcher))", + L"" + }; + BOOL result; + + return SUCCEEDED(BalConditionEvaluate(&WILL_ELEVATE_CONDITION, _engine, &result, nullptr)) && result; + } + BOOL IsCrtInstalled() { if (_crtInstalledToken > 0) { return TRUE; diff --git a/Tools/msi/bundle/bundle.targets b/Tools/msi/bundle/bundle.targets index 1ff00015b95e..b77646bec46e 100644 --- a/Tools/msi/bundle/bundle.targets +++ b/Tools/msi/bundle/bundle.targets @@ -88,7 +88,7 @@ - diff --git a/Tools/msi/bundle/bundle.wxs b/Tools/msi/bundle/bundle.wxs index 678dac4e872f..761384e7f288 100644 --- a/Tools/msi/bundle/bundle.wxs +++ b/Tools/msi/bundle/bundle.wxs @@ -24,15 +24,16 @@ + - + - + - + @@ -45,6 +46,8 @@ + + @@ -67,6 +70,7 @@ + diff --git a/Tools/msi/bundle/packagegroups/launcher.wxs b/Tools/msi/bundle/packagegroups/launcher.wxs index d09175f7dc2b..77c6ac5dde82 100644 --- a/Tools/msi/bundle/packagegroups/launcher.wxs +++ b/Tools/msi/bundle/packagegroups/launcher.wxs @@ -9,7 +9,7 @@ DownloadUrl="$(var.DownloadUrl)" ForcePerMachine="yes" EnableFeatureSelection="yes" - InstallCondition="InstallAllUsers and Include_launcher" /> + InstallCondition="(InstallAllUsers or InstallLauncherAllUsers) and Include_launcher" /> + InstallCondition="not (InstallAllUsers or InstallLauncherAllUsers) and Include_launcher" /> \ No newline at end of file diff --git a/Tools/msi/common.wxs b/Tools/msi/common.wxs index cc39540a2b06..9f96bd3f4cdc 100644 --- a/Tools/msi/common.wxs +++ b/Tools/msi/common.wxs @@ -103,7 +103,7 @@ - + diff --git a/Tools/msi/launcher/launcher_files.wxs b/Tools/msi/launcher/launcher_files.wxs index 589dee565471..7148258a000b 100644 --- a/Tools/msi/launcher/launcher_files.wxs +++ b/Tools/msi/launcher/launcher_files.wxs @@ -3,22 +3,22 @@ - + - + NOT ALLUSERS=1 - + ALLUSERS=1 - + diff --git a/Tools/msi/launcher/launcher_reg.wxs b/Tools/msi/launcher/launcher_reg.wxs index eef71c8d392c..d00f442fd083 100644 --- a/Tools/msi/launcher/launcher_reg.wxs +++ b/Tools/msi/launcher/launcher_reg.wxs @@ -3,7 +3,7 @@ - + diff --git a/Tools/msi/msi.props b/Tools/msi/msi.props index 2d13aef69877..29be12932801 100644 --- a/Tools/msi/msi.props +++ b/Tools/msi/msi.props @@ -81,10 +81,10 @@ $(DefineConstants);CRTRedist=$(CRTRedist); - + $(DefineConstants);TestPrefix=;FileExtension=py; - + $(DefineConstants);TestPrefix=x;FileExtension=px; -- 2.47.3