From 771c2681309e0ef3321237d8720c7f346ebc34e5 Mon Sep 17 00:00:00 2001 From: Chris Titus Date: Tue, 2 Jan 2024 15:45:06 -0600 Subject: [PATCH] Test 2023 12 20 (#1337) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update winutil.ps1 * [Fix]: MicroWin finds but fails to use system oscdimg (#1298) * Update winutil.ps1 (#1295) * [Fix]: MicroWin finds but fails to use system oscdimg * Compiled change b740693 --------- Co-authored-by: Chris Titus * Fix wrong hash verification for oscdimg (#1301) * Update winutil.ps1 (#1295) * Fixed wrong hash verification for oscdimg --------- Co-authored-by: Chris Titus * Fix Winget package for Chromium and add Ungoogled-Chromium (#1306) * Fix Chocolatey package for Chromium, add Ungoogled-Chromium The Chocolatey package for Chromium was previously the one for Ungoogled-Chromium instead, I fixed it and added Ungoogled-Chromium as a separate package instead. * Add ungoogled-chromium to inputXML * Making Install section fully data driven (#1326) Co-authored-by: KonTy * Update README for India blocking (#1336) * Fixed a couple of MicroWin issues (#1313) * Update winutil.ps1 (#1295) * Update MicroWin-Helper.ps1 Fix AppX package issue * Update winutil.ps1 Fixed AppX package removal issue * Added error detection to AppX removal Adds error detection to the AppX package removal function in case the process of getting applications fails This change might fix issue #1324 * Force DISM commands to be in English Fixes an issue where MicroWin processing would fail on hosts with languages other than English. This is because, by default, DISM uses the system language. By passing the /English flag, we're forcing DISM to be in English --------- Co-authored-by: Chris Titus * fix app display to be alphabetical --------- Co-authored-by: kian yamamoto Co-authored-by: JĂșlio C. Oliveira Co-authored-by: AlbydS <119180144+AlbydST@users.noreply.github.com> Co-authored-by: KonTy <9524513+KonTy@users.noreply.github.com> Co-authored-by: KonTy Co-authored-by: Munkk <152475628+munkk01@users.noreply.github.com> Co-authored-by: CodingWonders <101426328+CodingWonders@users.noreply.github.com> --- README.md | 2 +- config/applications.json | Bin 21870 -> 75692 bytes functions/private/Get-Oscdimg.ps1 | 2 +- functions/private/MicroWin-Helper.ps1 | 32 +- functions/public/Invoke-WPFGetIso.ps1 | 9 +- functions/public/Invoke-WPFMicrowin.ps1 | 8 +- scripts/main.ps1 | 54 +- winutil.ps1 | 3179 +++++++++++++---------- xaml/inputXML.xaml | 345 +-- 9 files changed, 1961 insertions(+), 1670 deletions(-) diff --git a/README.md b/README.md index 260c7f2b..95bf4738 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ Courtesy of the issue raised at: [#144](/../../issues/144) ### Issues: -- If you are unable to resolve christitus.com/win and are getting errors launching the tool, it might be due to India blocking GitHub's content domain and preventing downloads. You'll be required to use a VPN to tunnel out of India. +- If you are unable to resolve christitus.com/win and are getting errors launching the tool, it might be due to India blocking GitHub's content domain and preventing downloads. You may use a VPN or change your DNS provider to Google/Cloudflare/etc. Source: diff --git a/config/applications.json b/config/applications.json index 1d23aeb62a9365cf13f00def86e56f5c8645f4e1..52edb8f18dc7dca7d64c55e921190f87a030df06 100755 GIT binary patch literal 75692 zcmdU&S#w=Cj>qro^ryJxroxPJk&t`}6 z)2G=B`S<^x&1X>loBaIy?2XX9lIKUuf4MTdx}seqKVO;s=d#V-?Dg!!Y)}5vzOH1w z8`V?k^M&;NLHavc(bD?|8TX_7+oAm5`aKX1_vPuk742V=e`UP=&?EnkBO9+*0(buk zT=ruC-;DiU#_&X zllPr=Yod2?RBP7)ALG}<l-9$$jT zy(vFi+hIiZrG?EQd-B`m&pJ789t!W|O*8+#kXi48NcFM;i~FlKkC$y0v+lE0?ow0w zMl}>$pw!2&ht*Ng7T?eA2Dl21?feqZ|8!|FNj zanWKS>lBsD`Y@SGbh_giZ3}$5ym|;>MR3M!bSV0OZuowUxV>zJc0HA-T%+vrU&nN+ zp9c@QYr^S!`Gai}%`)N}dB%FuMmx)Dtxr1NHnGT$!Uu6gjgPyY(Jv(G%-fs%rIwW= z86_BW*Rq#~RLQfaZ7+kC!GGQQ?Pf+#OpcaXdy~Axs2s^CTVqu6>|yjuup#DtF0$6> z(XEVrG0T59OTfzVd`MkPdU@JYa_S-TS`hgh=6&9w@1<@B`e@CIS^oPNGUZ6qX^-+8 zJ*4l2ehogjCN|g+Ya;gD7ybDxUiA$Xa@-YmV61^@zM%x-iee)?c9-8mN3`>kqlRLN(P$Y**9+d17sK(#N zY>zi!lxx8cev~{6t030r(_yxeA>iRf=J=!h(U`>7y)D5Nv=+0SqNPb(YE(IfQMT5n zl4lQ{-@^N>(InQL_^01y`ctX_B_7u6bV&TX;?u(b-FPK$ob_CdejEh-cr5;mNRi(T zMORMbXQICM@;ADZ_Gu`TNabT2U3|o$d2@f^7}QhEV8v)Rp4PqmiAd_>ElLDRcSR3 z9NP_}l=f~^t@X;*aOwKMAeN?TrBIVV?gKP%7Dc{bh;PK*tb=mPn!idMQ{6tGKC)a29q=#W_>ii0` zBehTL%^ZlfMr)7#c5~U^WTTR?P;VKtV^?O8>-q969*Zwge&rrB~v!V3O9~vd( z_E6djmbG6MffI9+N74D|X!eu*`I{i5K3@BX?;P4ZYnzT_RQ+~#85)&x>7havja7+e z?eo~r)1>Q3TXsjRr}`)|9sl&1q{~1rm18ba<(PPQvSS- zWMKO^s>7ZL{#hpz>sfF=_P0Y{Q8)Fs(hdx#etnH7D_>uSWvjF*&si*+nhe$}uPSC) zs($Y;sX>xG`!USYzKyP>r5nHgTuPj zTGbtq-G=_Q?NC#hQXE(p=6refORkH!5lpC$crG~kQQU^CLAO_}?#MhvMQq>GF}<5E z>V?yJBEekF86bnNd+=OW19NM(IeRFmY_3`i>zDOvH0|`rIP|oI{mu`v26tDm{X?lp z#GA9W;e67#Ug@Y);xw1)Qe=ox`&{I}$3B%vhv&Xej(M6Nh1QEXZ^(L6b6o6=uLqP4 z!puj-neIqXGpMzWi`kFz?C$JAm>UeG(q|FRTdN;uze;=NQESo8dzl@Pbt0RiS**Fp zQjg^~l5z0SH2m^W7m}ye-Du4vEoR!E;W3UN)L$otDu-vyQ6s+zm|wI`((CE9l2+4V zO1zHsy~wmuG4c>S5O4NTa$UYoqVM}5b3!hK(|x+fsD5%w`q&WfxxMOdSSLRS?V8y2 ziTvNjH~N+~{aP@CZ=zO3Vm|wK`B_hb;=%r-!nzNnhog`&+@F0{f#r5WzmU3At!JLFQHk+@FJj^wSQMZUJ_+lcgFq~}s%`!Q^WC|jbF^WdR#C^I9~ zMD>}72Stm8%%$3gt`{FkRy);+w8S^%27hldc$S%C8S~2*fh2ivGQ*46Uq>yqpM$*3bXZ0yd`s5zLPs*!`RF~A zIf5OO6G6v*)*Nr@u}ZIIV`zptrEQ0iaXgnCF?$}Z|ikCW; z6%`fDK6ZWebJT3a-tacDH{D79R-z4dLDO?x`ku^MOQeVRV`rZJ_C|Ya_byV&=iwvtKht@$cV}S$b+o|!%`xwJ^h_WSaIS-zn{3QB?taW+ra);_P zI*Xp_C}Rkw+!$R;{K$kGul4xVp3y5Yd?ebf<7p3QT>d2WhFyD(h{f@zMlJH;A$KBn zbtrb}d&Yk(DHpT&(-+*I zn98Zhn=d)JSn?1xvPW8^*E@Kgi9Qg2J&+!r2A@L4_iqx9ap!|q!9fchot$KBpK4Sa zv?3StOb&L!Spj+&epu!cxsB*$n6K*4WN(uiDQ>@tImxZ857U}bv--z0`ZlJbz#D*zbV0EqF)5AsYIXV#gsJYALrdZMEU~Oc1xZi*n zi&%79boi#|@GvgyW~Be#0uAGroS|~)A@Zxpa}ac;W}dp6P?L{N+YV!qk70BzFiCkN zdtvqTo5DS-=8si*RI{ej`6JG2ypVU1&qKT^R)o(*OX3|B={-rc{;Hp=HPLSDUbE+I z@xH(EI=Kv<9+Exfd`5kw9<6bIB`Y;T)G92*LbW%Gat(#jgH2(nC4ZV%BeQT2X1ybc z&^JT|+Y_zH^+SCi7_x5k)`8a~gF*kytmp~V8tdXUc0%iMwBi^>)xwgEKhP>IiWM|- zk)F^$tg>mUdhh_ux6kGO@5Cl+>K3Bs&~|^G{W+kQ_QkW*`*(FNrH&)Vztfg&kWIN! z-aUIIzGVNN+z+Vx8n;!nAUZ4iFpVk^>yBr%Eimfx>Lc`4^oe~FDjGa{jCV|K$%@HZ znT%aL`svzWk&f--urDZ_h^?I_j^7f0bYE7(TQXyFC-AjUZGELcwm~gQWH_9@Dp+Gz&WY5VUDGH~sfl5U31eH6zSOOJ45Mp-QpzJY3o?(BtMu24 zWRaOyk3<`Yy*-QD$>?=l-BYq&^l9pkORVxyQLan|YXNotf=Y zaTgx@2KHnOtL}Jhaq9Bw`L566Tc`{pvZ}d}<4H!ZkwN#_7)JSsF(Qb6r!8ApV;}Dx zX50^4W%2(;B=Rxx|yXhkmBTe5cp=Y|k!MSyESYJf@ zG(H={W{OqJF9~Np1}X#f0zL}YMJw2m)UN;#*`o^@OX)dm;&$!Jw4tjn>6k{>!g4r+ zZ9IDDP!n-160x7EH?h>LL#{4cv3IDg`0j!BWY5MUqyCXStm58r+Bd5qc95f=yi%+r z`_3XqZgaUkwDx2aYHxi#y0)Zb4>`6m*-Cw}evPJIS1w9^-%IG3w! zZZF&H%HMjTvHNf5_bwNQO5}SUZfI0#J%o^q{6|eC)(t^M@7|_wy)AZKP~{8(H`A?4 zq@16_HH|2>hH=+cBOBf2Y7RWkH z+snqaNwZB{>bMEJoCE1cl)YnPw%C9>|yd?;Ml18GRLsgtfS6Z(2i>9MpCG}-v z0k5i4HoB)nasI?YyB6WCfa6R`>tVapn}wNM#_7iOu4V_(c(A_C5{ad9o!3f<+woAo zW!_m*-Vvl0lI4r-hV{+*Hk!-TvdGm!-X&`nPru#^6)^>SbFT!2n%ggsdy`` z&#kF?*e+U-AuanbR7%g+9nWYlS0lSzdOCR^I>bKT`ygK)19%<}ebcu01>dwScn$qq zs!v_yVymwIZHHmx;Vf~8?tHxv%ZaOY-`DL3iez+tUbT57by0dhZ~lA?yS|ZIVb(8! z?-5yR=(^KKiCW}$5^<6F!W+bPCS$2h);nJS!t0i`e(Vd=6R}GAMaSr4&zr?a`SdK2 z{Q~YUp#od$?LGUWqT-84zKw(|8zi zW(JSMj$+O1`Y@x{^8{Kaz}L6NtSui2{bH8py_GF57sp%zt=>-g@DSr3dDgYQ{Y6U7 zzY@Q44~~ALEdI+FUUgaMi?X{XvO?aFQ#iiHP>FgJ-rG^tDcHWMe=1In!ks2m=H~e! zP7Ug9I;{6ODf>@3DLaN#$`M*cjQ5@7k(deWKIAodp7xyf*spP2&h3Vv^ZGezgl@>a z9NoQ;T>km;r10t9%l8%9*_BT30jzy5jA6d7oJrDmvNro(-s4~7jr=j+0FruMA(gl0 z?uYZD<7nbNl5V7kwl>4f;O_y%z_Z7k$R4MgNCCH2O&Dq0cvt$mP|<4}HjQN_%o~ zd5BXr{BZzP{c(3h zqiv5>mvav>ZV=&~c|AX`XXejl=iD)&J=y8|F>CG{S)*4y4>Bc={j$_!NxdImxH&J9 zyQ_W-jZy;*M;q0s+v}iVXZ-lc5y!J%LVZ2?Kh2O4bDj-D{lXCISJtAjI*OfB@PLh#@BF9>HvWHw)q}I$>{O$Z!e6h%+oce1-z8H<(*PSQ$J>>MU;QX8K z#W&SyK7;v5Y6{+5g}kR_gDl z*7H5wPhxF%WvzW*a<1Dlx8IUE{;#qV^0i^KCDO3-v?Cem9m$ijuc$K4Lrk&|-p_84 zC4NVuDK*$}@A-~+t8c|~J&`|~!pnGOx-Nc+I&d)_tBc*P=*fHWD(H!RtL^zY&|@D* z^XSJS{ojHH`RH-G05xW;Vc0|DOHb^?#GdqyTeR_O)5Vlav`@3Ce+@dR_iB5yVvg94 z7l>HwYd8v-LIX?0xNny?TYsN-iWsrB>V=op^>xhp`kE1g%kv>d4_MMgAQt=jx)I}U zyVL0yU+s8bHEXU*HQk2Hm)t3&KaKe)>(>w)ish*zr*52`POYh}UAcaj`APgL(GvgH zx6Zfelvn1-jSwl|dC9zJT^6x@P5ero5_fCt37>WMI<6Njz^&}Vuqjuh-SLce8XQaB zJ%6t=Es-i1`&P)w9p0VN_uprd(~Rj~Ir_Bd<$R-y-%0FARV*ukgAnKMNfcY7iD+Og zrq@=q*CguThFz__(ES$bR;({WsMN)DM5CHQ3yohew3~O%W7$-AvFcF2QCmaBX{WLk zcy^zTX=(r1Q)ApGgJ)WWNvB}5@Hi-p*65m793d6J9J46(~Y2CNdN6pFac-KkU&X6hb z8>XBB!|O|V?=9u^G>a?%XA7w$B6_QhxJ{?D{Z|te@Q=Z7Yr-=ACvL4a1o%pJ_f*Jb)?@bvY zZv%$qvvCB+sHd>rF8|mr_cf?}X@xrY)J4l=!MW)Rf9dPxwrDad$V2grPsKxWYMlJJ z-Y1gwr8$(pjLy*>{WSO*9#IAmK2HSAOkI~lxV6e5#Gl5r)B2s(rX#Q5bVnrRHWmHK z0Z{~XGj%xxVq@kA(_vpDSs~_aI7wSR8%J@BdI}xv@_#-X*L!rIi&%t0NJkKT2OJIS`al30h+QODvh!Gmu< zn1$R*dNgFpNW7l|qn|=U`(!AspPCrmNvgAcs3h>dAzIpXw~rhNOF$=&$e--}+=*fbS(X$y2Qe=?5NFzqxtSn}f|#us0x zsjjhM-DhPzxDZWdcQm#%J?YwNI)c$nfltn}hYf37@}DPC7eS8C_8Q`;>$)s8-%C&X z;m-2>$%gz+T<|p8V;IxCk~h8=8T;VW95MQdJRyRe7V}b8{l1t=oA0Uk^&6$s)Nt5| zO>fVxK<=hTQ$Dt3tvia*PGS8e@6683 z$n1=Kke!tq!3OJN^S9CpJ@#XtCo=bLNS>#Ehw9#{AH%2AKpV?wrom8U&aIdmQv}gHTUXw2;|HGZy z-n`8|q24$`t%|lol&a9`rgMbP@bzJ_%X zJJA;CZ+WJC3KR_w4?`;%xhE45fUGX%R{#z|Wn1pOBRSy9d9Ac<@kuuK9L1eywa}QB*qP>pG^S z9ml!bw?&a(Q&y-Ch4aRf%<|OR)|^=6JkO?B{8c#*!yNSe>?fIrZjVNkUqiIBo5<){ z_9sE2Ccd^D$bIpEn_}0G!YneTX|eBVZCUw5Z%l?f!me3|e3IFg=v!+u<8Hn`?>-XE zSrf$K3=eMoJsC>nDrIPFYca(v(k}-%o3u5^QU~=(ERwszbp=#&*6yaXAo36ut1&vKU-mt3sL+dc@HouMB3G1tnsi#%tLOEs6hr|po($@%i^92BS% zI0t*)&#U$!B$!B?KwSACuq>y($&gS5glj(=7(xmg_?sChvH$?$4U*!KuG zB*S}0yn?n(^Gn>LKlE=YN~P}B%{dpXnaV3)K2u5Z+_<0N<#u!CV(zZ^t!h5z=5KAW zBUQ}zMFYzxV<>gU^Ze&UBi7~Cv)cD!XUsUNWoWIhU+=@6Ah8Ym`{ctOB>nJg45_|R zTVvJ7v40!nRv?kn z?*>d>3p$+Y;X4fEbhs}mr(-`wXOHrB*%Gr4%a!vd`FmgHQ}S*7E!!ZO%W?YqX}M>M z3VAevwVlQl-u&6$%Cx9N&7*IF6?b@bW%V@hKy2zr{?x2jids$k-zjyAf2)_~6}I|2Im+lz8N0w8kUn zvIY<0omb*nV%38;cQFEOsIAa8icS8^L#P~e3Y zaHL$wy=}3LSxkvQA5Fjf4`mjJJKP%C8?x-}ktd6@>6PNPpuSr$eh~Tj>M$~S(lb-D zQ?8XZb@3r*-SReMoyun>L-#9EeWMzZZBXiRe74*F_GSLAk0;5_ovfnCvVP;1#8A&9 zf1+7DqZ`LE=b$}~sYEpzN4)+)vcu$0IEzyg|B$_=)$ODeD0QEXW7Riyd&K&<_AFIT zHDafAt6Nqqv^f^*Cd>9>l`TN)$gq&v=X4goahB(*P_q{rM=)GU-&XQslx=LcC*6L=5E`Ry zg;tjbUuU?f>TQ@C$zO6}hAJDf0nA^lbZbr--xEsiG$%K;AFNFKy(X>c_u)XlV~A=G zc*<*$a;q;NQz#mE5b6wlx$=`_0ENx;AL# zT>5yRg1;*0JqAaj{(`DXoI>>#d-aG+53xM zDIL2-0j;$5%#puKPJx`x+9&*SfbOVXoG_4Sgck< z=ZGfBO&&_DGBnfqxUl}!FAe#tbZk0OvvWp8iry+7pQawJi=4Gi>005Jj_%{aexTkb zSQE>|b3oU{-=*z_^{C7`w?ZN1Z!XmrdXv?B8AIs}2E<-ILab~!JHR|omZe62$~I_E z`7G6qt`3b+x5BXGfiHN}AofD+Rd*$7PEW9oNa=@lNhx&B{|`&mCGf2lvySRI*U?nu!)kfxGQ;i2>R8u4%skjpjh|vS8v5EViD>QV^Uy!O zl3I`(%XyYBJnPq?sY^0EN-e`0crQcrt?=t|!Reb64NuFc`a^GO{MA1MWp>Wi<^QTR z`^zjDQ9_()=xG?abUdSKgO_ob&Wks~t_*&P-Lx8wdnt$=ODo@>MM}Ot65E*6rB?OP zv_a;jyg%hnD;u7RK41s>jc-qf^gbl4f!u7l8{_T9>fJ}W-qI793(2gqBf_(XJv|O1 zIK~OzdEpJ$)QyaddX`-!lLtT7#mGmvHhU54-KccZuU0;kC=Ns|PcVkxbeW8lLmv;m zWy5^y+aNd4kxe@c^sfYqSEAjq^%xd?RBi0>R>Gl&#cO%b^*NjeGS{t3B=SbSM?+>$ZF5@undEsVdV&|F&N^g16d=|H9+?ACJHdOXw(wF{w zXk=^A2CuskMU}jlcT4-L8NJ7*tZwzZd0Z#!-}P0seWR_(x`DTs#uIH2RPIk-OUsVz z3-Pylw}J1Q?ge^I{BoP%6Um@j)}{MzDGsIXHn7$krKaQK3ZFE&i&N{5pO2oE;KUnzTR>3n&#}|Pvh9ce%oUa zNA_i>nuncA;`rLHC+bNQ>TzC6OEjmi7n8cHHRJSc?5>|{A2BL`pN1Hp8Io_Sv13>_ zTT(kog*IPjp_YV|LbsPOT> z4bGfAA)8uvx?)q_h0%j(`g@8&7r!CORyvrE@7pL}Zzl(c5A$skzr}o6W*9c*9ss^+ zqy5AxgNyi{ZePYE>hD>yF~gjCSZ#$H7dS!2$$@v_q;O3ha7*S&q72aCz67$UWgk%@ zu%+fH<~FWKt~sUWj5cE$eH*<>Wtb1h;Ncg~P991Qrsm66)cA0lhn`#Jv_Cu2#JPv^ zWmP-F`9Shp<6k8%M{bXv-k20QtwqXwkZ+msB)X%jg zFH_I7r6i}HXL(okaquniY^>Kfl}$xEGte8c>+P(UVGYekGrBgKnRDq`^nu8UUnjcb zJM)_JiC%uJ?oMllcf?xRXH#Do`?;U=WAc}ltW`yf%XmiD3a3?t^m}1~z_nXYIWJEM4LVnG@_dBL< zzb&iO^L7il(?m5ff1c`7iQy0jtuY+p+(VFfgS{0Z4$W`)v+#pX8_vCV`!Nhk)TUXx z_VMWBLnTCw4|^a8LfK!(2ts53KBi;nH9dblb^M+zKB~u(Gr{I-v@O!=?FzBouy*0q zx>Rj^*@M;CR8o_3*WFov{f;N6!b(>^bOQFO{dK%X9Cla;o$TLnX@x9`-vYUNv%ast@u+G+R`jU+?y(?!488n2)~R>pnHLiIx=T(+Z%&LA@ILY%1=+F{sCS=^VLHvs+s9>Ep~j9NoYnhE>X*@_ zm*K>_=K)wrbN?Tsu*$&C67_&z-jiusR~v^YTj^vR|7MWc(=yhY_%FRT607xftlMTG z$aVV}MroY74N|*39Q$aos(&9ck?}@+A1^Y+v?AXbTP;@mUg^^@n?yIuv46@uV=LUc z()e);t1s5BZzXaeTjit1jm+rqJvnvwtzfq)KR=dxn#VC>rNT@?bc63?rFRr^tfq~v zaO&fQ`yp~1e4Qh*CtLDH_El@_^RDdQZivs)I40JVpmEw0cTLd~waWU$!!#X#y6VxA zf98hBzmKBsx$^ZX*08*rnmZ#t2Yq5Ml37IG=qo{%YI)AVGe4Alnx>Vr!!+~iZpJ4X z7^U}6Q~8($4@F`uxaJ0g#{m`2@g0g5YO8qbR{nHM@A}6!Y};6IpDez&Q{IVF*xjl* zF^090UD*zGPUy|Pyr*~u18q}Iv`@}ugDg4Yye{zT(72Mf$+MA4qTSZzIccDCS#w;izvXQmR2_UE%^f`#Yh29kMXoW4j){nXDSTE%N7m8WN?Y`7K&{tS;v@TEz)6 zyo#Q#^lT7`X~B*kF(EZP+#VmF@2+|pMs1oIvCE-{&S%k-_Z3kqXCEut4FCWD literal 21870 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 - $appxlist = dism /image:$scratchDir /Get-Features | Select-String -Pattern "Feature Name : " -CaseSensitive -SimpleMatch + $appxlist = dism /English /image:$scratchDir /Get-Features | Select-String -Pattern "Feature Name : " -CaseSensitive -SimpleMatch $appxlist = $appxlist -split "Feature Name : " | Where-Object {$_} if ($dumpFeatures) { @@ -40,7 +40,7 @@ function Remove-Features([switch] $dumpFeatures = $false, [switch] $keepDefender function Remove-Packages { - $appxlist = dism /Image:$scratchDir /Get-Packages | Select-String -Pattern "Package Identity : " -CaseSensitive -SimpleMatch + $appxlist = dism /English /Image:$scratchDir /Get-Packages | Select-String -Pattern "Package Identity : " -CaseSensitive -SimpleMatch $appxlist = $appxlist -split "Package Identity : " | Where-Object {$_} $appxlist = $appxlist | Where-Object { @@ -85,7 +85,7 @@ function Remove-Packages { $status = "Removing $appx" Write-Progress -Activity "Removing Apps" -Status $status -PercentComplete ($counter++/$appxlist.Count*100) - dism /image:$scratchDir /Remove-Package /PackageName:$appx /NoRestart + dism /English /image:$scratchDir /Remove-Package /PackageName:$appx /NoRestart } Write-Progress -Activity "Removing Apps" -Status "Ready" -Completed } @@ -104,16 +104,22 @@ function Remove-ProvisionedPackages $_.PackageName -NotLike "*Wifi*" -and $_.PackageName -NotLike "*Foundation*" } - - $counter = 0 - foreach ($appx in $appxProvisionedPackages) - { - $status = "Removing Provisioned $appx" - Write-Progress -Activity "Removing Provisioned Apps" -Status $status -PercentComplete ($counter++/$appxProvisionedPackages.Count*100) - dism /image:$scratchDir /Remove-ProvisionedAppxPackage /PackageName:$appx /NoRestart - - } - Write-Progress -Activity "Removing Provisioned Apps" -Status "Ready" -Completed + + if ($?) + { + $counter = 0 + foreach ($appx in $appxProvisionedPackages) + { + $status = "Removing Provisioned $($appx.PackageName)" + Write-Progress -Activity "Removing Provisioned Apps" -Status $status -PercentComplete ($counter++/$appxProvisionedPackages.Count*100) + dism /English /image:$scratchDir /Remove-ProvisionedAppxPackage /PackageName:$($appx.PackageName) /NoRestart + } + Write-Progress -Activity "Removing Provisioned Apps" -Status "Ready" -Completed + } + else + { + Write-Host "Could not get Provisioned App information. Skipping process..." + } } function Copy-ToUSB([string] $fileToCopy) diff --git a/functions/public/Invoke-WPFGetIso.ps1 b/functions/public/Invoke-WPFGetIso.ps1 index b9bfd174..8c819a2e 100644 --- a/functions/public/Invoke-WPFGetIso.ps1 +++ b/functions/public/Invoke-WPFGetIso.ps1 @@ -18,12 +18,10 @@ function Invoke-WPFGetIso { Write-Host "/ /\/\ \| || (__ | | | (_) | \ /\ / | || | | | " Write-Host "\/ \/|_| \___||_| \___/ \/ \/ |_||_| |_| " - $oscdImgFound = [bool] (Get-Command -ErrorAction Ignore -Type Application oscdimg.exe) + $oscdimgPath = Join-Path $env:TEMP 'oscdimg.exe' + $oscdImgFound = [bool] (Get-Command -ErrorAction Ignore -Type Application oscdimg.exe) -or (Test-Path $oscdimgPath -PathType Leaf) Write-Host "oscdimg.exe on system: $oscdImgFound" - $oscdimgPath = Join-Path $env:TEMP 'oscdimg.exe' - $oscdImgFound = Test-Path $oscdimgPath -PathType Leaf - if (!$oscdImgFound) { $downloadFromGitHub = $sync.WPFMicrowinDownloadFromGitHub.IsChecked @@ -32,7 +30,7 @@ function Invoke-WPFGetIso { { # only show the message to people who did check the box to download from github, if you check the box # you consent to downloading it, no need to show extra dialogs - [System.Windows.MessageBox]::Show("oscdimge.exe is not found on the system, winutil will now attempt do download and install it using choco or github. This might take a long time.") + [System.Windows.MessageBox]::Show("oscdimge.exe is not found on the system, winutil will now attempt do download and install it using choco. This might take a long time.") # the step below needs choco to download oscdimg $chocoFound = [bool] (Get-Command -ErrorAction Ignore -Type Application choco) Write-Host "choco on system: $chocoFound" @@ -47,6 +45,7 @@ function Invoke-WPFGetIso { return } else { + [System.Windows.MessageBox]::Show("oscdimge.exe is not found on the system, winutil will now attempt do download and install it from github. This might take a long time.") Get-Oscdimg -oscdimgPath $oscdimgPath $oscdImgFound = Test-Path $oscdimgPath -PathType Leaf if (!$oscdImgFound) { diff --git a/functions/public/Invoke-WPFMicrowin.ps1 b/functions/public/Invoke-WPFMicrowin.ps1 index ca27b8ef..0b50c9eb 100644 --- a/functions/public/Invoke-WPFMicrowin.ps1 +++ b/functions/public/Invoke-WPFMicrowin.ps1 @@ -44,7 +44,7 @@ function Invoke-WPFMicrowin { if (Test-Path $driverPath) { Write-Host "Adding Windows Drivers image($scratchDir) drivers($driverPath) " - dism /image:$scratchDir /add-driver /driver:$driverPath /recurse | Out-Host + dism /English /image:$scratchDir /add-driver /driver:$driverPath /recurse | Out-Host } else { @@ -136,7 +136,7 @@ function Invoke-WPFMicrowin { Write-Host "Copy link to winutil.ps1 into the ISO" $desktopDir = "$($scratchDir)\Windows\Users\Default\Desktop" New-Item -ItemType Directory -Force -Path "$desktopDir" - dism /image:$($scratchDir) /set-profilepath:"$($scratchDir)\Windows\Users\Default" + dism /English /image:$($scratchDir) /set-profilepath:"$($scratchDir)\Windows\Users\Default" $command = "powershell.exe -NoProfile -ExecutionPolicy Bypass -Command 'irm https://christitus.com/win | iex'" $shortcutPath = "$desktopDir\WinUtil.lnk" $shell = New-Object -ComObject WScript.Shell @@ -238,7 +238,7 @@ function Invoke-WPFMicrowin { reg unload HKLM\zSYSTEM Write-Host "Cleaning up image..." - dism /image:$scratchDir /Cleanup-Image /StartComponentCleanup /ResetBase + dism /English /image:$scratchDir /Cleanup-Image /StartComponentCleanup /ResetBase Write-Host "Cleanup complete." Write-Host "Unmounting image..." @@ -270,7 +270,7 @@ function Invoke-WPFMicrowin { if (Test-Path $driverPath) { Write-Host "Adding Windows Drivers image($scratchDir) drivers($driverPath) " - dism /image:$scratchDir /add-driver /driver:$driverPath /recurse | Out-Host + dism /English /image:$scratchDir /add-driver /driver:$driverPath /recurse | Out-Host } else { diff --git a/scripts/main.ps1 b/scripts/main.ps1 index 2e716be1..b7e88011 100644 --- a/scripts/main.ps1 +++ b/scripts/main.ps1 @@ -53,13 +53,55 @@ $sync.runspace.Open() $inputXML = $inputXML -replace 'mc:Ignorable="d"', '' -replace "x:N", 'N' -replace '^`n" + $sortedApps = $organizedData[$panel][$category].Keys | Sort-Object + foreach ($appName in $sortedApps) { + $appInfo = $organizedData[$panel][$category][$appName] + + $blockXml += "`n" + } + } + + $inputXML = $inputXML -replace "{{InstallPanel$panel}}", $blockXml + $blockXml = "" +} + +if ((Get-WinUtilToggleStatus WPFToggleDarkMode) -eq $True) { + $ctttheme = 'Matrix' +} +else { + $ctttheme = 'Classic' +} $inputXML = Set-WinUtilUITheme -inputXML $inputXML -themeName $ctttheme [void][System.Reflection.Assembly]::LoadWithPartialName('presentationframework') @@ -79,6 +121,8 @@ catch { Write-Host "Unable to load Windows.Markup.XamlReader. Double-check syntax and ensure .net is installed." } + + #=========================================================================== # Store Form Objects In PowerShell #=========================================================================== diff --git a/winutil.ps1 b/winutil.ps1 index 56b17983..e81ce133 100644 --- a/winutil.ps1 +++ b/winutil.ps1 @@ -10,7 +10,7 @@ Author : Chris Titus @christitustech Runspace Author: @DeveloperDurp GitHub : https://github.com/ChrisTitusTech - Version : 23.12.19 + Version : 24.01.02 #> Start-Transcript $ENV:TEMP\Winutil.log -Append @@ -22,7 +22,7 @@ Add-Type -AssemblyName System.Windows.Forms # Variable to sync between runspaces $sync = [Hashtable]::Synchronized(@{}) $sync.PSScriptRoot = $PSScriptRoot -$sync.version = "23.12.19" +$sync.version = "24.01.02" $sync.configs = @{} $sync.ProcessRunning = $false @@ -190,7 +190,7 @@ function Get-Oscdimg { Write-Host "[INFO] oscdimg.exe SHA-256 Hash: $sha256Hash" - $expectedHash = "F62B91A06F94019A878DD9D1713FFBA2140B863C131EB78A329B4CCD6102960E" # Replace with the actual expected hash + $expectedHash = "AB9E161049D293B544961BFDF2D61244ADE79376D6423DF4F60BF9B147D3C78D" # Replace with the actual expected hash if ($sha256Hash -eq $expectedHash) { Write-Host "Hashes match. File is verified." } else { @@ -1043,7 +1043,7 @@ function Remove-Features([switch] $dumpFeatures = $false, [switch] $keepDefender Remove-Features -keepDefender:$false #> - $appxlist = dism /image:$scratchDir /Get-Features | Select-String -Pattern "Feature Name : " -CaseSensitive -SimpleMatch + $appxlist = dism /English /image:$scratchDir /Get-Features | Select-String -Pattern "Feature Name : " -CaseSensitive -SimpleMatch $appxlist = $appxlist -split "Feature Name : " | Where-Object {$_} if ($dumpFeatures) { @@ -1071,7 +1071,7 @@ function Remove-Features([switch] $dumpFeatures = $false, [switch] $keepDefender function Remove-Packages { - $appxlist = dism /Image:$scratchDir /Get-Packages | Select-String -Pattern "Package Identity : " -CaseSensitive -SimpleMatch + $appxlist = dism /English /Image:$scratchDir /Get-Packages | Select-String -Pattern "Package Identity : " -CaseSensitive -SimpleMatch $appxlist = $appxlist -split "Package Identity : " | Where-Object {$_} $appxlist = $appxlist | Where-Object { @@ -1116,7 +1116,7 @@ function Remove-Packages { $status = "Removing $appx" Write-Progress -Activity "Removing Apps" -Status $status -PercentComplete ($counter++/$appxlist.Count*100) - dism /image:$scratchDir /Remove-Package /PackageName:$appx /NoRestart + dism /English /image:$scratchDir /Remove-Package /PackageName:$appx /NoRestart } Write-Progress -Activity "Removing Apps" -Status "Ready" -Completed } @@ -1135,16 +1135,22 @@ function Remove-ProvisionedPackages $_.PackageName -NotLike "*Wifi*" -and $_.PackageName -NotLike "*Foundation*" } - - $counter = 0 - foreach ($appx in $appxProvisionedPackages) - { - $status = "Removing Provisioned $appx" - Write-Progress -Activity "Removing Provisioned Apps" -Status $status -PercentComplete ($counter++/$appxProvisionedPackages.Count*100) - dism /image:$scratchDir /Remove-ProvisionedAppxPackage /PackageName:$appx /NoRestart - - } - Write-Progress -Activity "Removing Provisioned Apps" -Status "Ready" -Completed + + if ($?) + { + $counter = 0 + foreach ($appx in $appxProvisionedPackages) + { + $status = "Removing Provisioned $($appx.PackageName)" + Write-Progress -Activity "Removing Provisioned Apps" -Status $status -PercentComplete ($counter++/$appxProvisionedPackages.Count*100) + dism /English /image:$scratchDir /Remove-ProvisionedAppxPackage /PackageName:$($appx.PackageName) /NoRestart + } + Write-Progress -Activity "Removing Provisioned Apps" -Status "Ready" -Completed + } + else + { + Write-Host "Could not get Provisioned App information. Skipping process..." + } } function Copy-ToUSB([string] $fileToCopy) @@ -2313,12 +2319,10 @@ function Invoke-WPFGetIso { Write-Host "/ /\/\ \| || (__ | | | (_) | \ /\ / | || | | | " Write-Host "\/ \/|_| \___||_| \___/ \/ \/ |_||_| |_| " - $oscdImgFound = [bool] (Get-Command -ErrorAction Ignore -Type Application oscdimg.exe) + $oscdimgPath = Join-Path $env:TEMP 'oscdimg.exe' + $oscdImgFound = [bool] (Get-Command -ErrorAction Ignore -Type Application oscdimg.exe) -or (Test-Path $oscdimgPath -PathType Leaf) Write-Host "oscdimg.exe on system: $oscdImgFound" - $oscdimgPath = Join-Path $env:TEMP 'oscdimg.exe' - $oscdImgFound = Test-Path $oscdimgPath -PathType Leaf - if (!$oscdImgFound) { $downloadFromGitHub = $sync.WPFMicrowinDownloadFromGitHub.IsChecked @@ -2327,7 +2331,7 @@ function Invoke-WPFGetIso { { # only show the message to people who did check the box to download from github, if you check the box # you consent to downloading it, no need to show extra dialogs - [System.Windows.MessageBox]::Show("oscdimge.exe is not found on the system, winutil will now attempt do download and install it using choco or github. This might take a long time.") + [System.Windows.MessageBox]::Show("oscdimge.exe is not found on the system, winutil will now attempt do download and install it using choco. This might take a long time.") # the step below needs choco to download oscdimg $chocoFound = [bool] (Get-Command -ErrorAction Ignore -Type Application choco) Write-Host "choco on system: $chocoFound" @@ -2342,6 +2346,7 @@ function Invoke-WPFGetIso { return } else { + [System.Windows.MessageBox]::Show("oscdimge.exe is not found on the system, winutil will now attempt do download and install it from github. This might take a long time.") Get-Oscdimg -oscdimgPath $oscdimgPath $oscdImgFound = Test-Path $oscdimgPath -PathType Leaf if (!$oscdImgFound) { @@ -2616,7 +2621,7 @@ function Invoke-WPFMicrowin { if (Test-Path $driverPath) { Write-Host "Adding Windows Drivers image($scratchDir) drivers($driverPath) " - dism /image:$scratchDir /add-driver /driver:$driverPath /recurse | Out-Host + dism /English /image:$scratchDir /add-driver /driver:$driverPath /recurse | Out-Host } else { @@ -2708,7 +2713,7 @@ function Invoke-WPFMicrowin { Write-Host "Copy link to winutil.ps1 into the ISO" $desktopDir = "$($scratchDir)\Windows\Users\Default\Desktop" New-Item -ItemType Directory -Force -Path "$desktopDir" - dism /image:$($scratchDir) /set-profilepath:"$($scratchDir)\Windows\Users\Default" + dism /English /image:$($scratchDir) /set-profilepath:"$($scratchDir)\Windows\Users\Default" $command = "powershell.exe -NoProfile -ExecutionPolicy Bypass -Command 'irm https://christitus.com/win | iex'" $shortcutPath = "$desktopDir\WinUtil.lnk" $shell = New-Object -ComObject WScript.Shell @@ -2810,7 +2815,7 @@ function Invoke-WPFMicrowin { reg unload HKLM\zSYSTEM Write-Host "Cleaning up image..." - dism /image:$scratchDir /Cleanup-Image /StartComponentCleanup /ResetBase + dism /English /image:$scratchDir /Cleanup-Image /StartComponentCleanup /ResetBase Write-Host "Cleanup complete." Write-Host "Unmounting image..." @@ -2842,7 +2847,7 @@ function Invoke-WPFMicrowin { if (Test-Path $driverPath) { Write-Host "Adding Windows Drivers image($scratchDir) drivers($driverPath) " - dism /image:$scratchDir /add-driver /driver:$driverPath /recurse | Out-Host + dism /English /image:$scratchDir /add-driver /driver:$driverPath /recurse | Out-Host } else { @@ -4265,320 +4270,66 @@ $inputXML = ' - - + + - - - - - - - - + + - - + + - +