From 20207512cd21f25943fd46454e02180fc770c130 Mon Sep 17 00:00:00 2001 From: "J.P. Hutchins" Date: Thu, 7 Nov 2024 11:27:58 -0800 Subject: [PATCH] build: wixv4 msi build (fixes #1) This commit adds a WiX v4 MSI build to the project. The build is run from the msi/build.ps1 script. A GitHub workflow is added to run the build and upload the MSI as an artifact. --- .github/workflows/msi.yaml | 31 +++++++++++ msi/.gitignore | 4 ++ msi/Package.wxs | 108 ++++++++++++++++++++++++++++++++++++ msi/README.md | 7 +++ msi/WixUIBannerBmp.png | Bin 0 -> 3273 bytes msi/WixUIDialogBmp.png | Bin 0 -> 16035 bytes msi/build.ps1 | 26 +++++++++ msi/wsl-usb-manager.wixproj | 25 +++++++++ 8 files changed, 201 insertions(+) create mode 100644 .github/workflows/msi.yaml create mode 100644 msi/.gitignore create mode 100644 msi/Package.wxs create mode 100644 msi/README.md create mode 100644 msi/WixUIBannerBmp.png create mode 100644 msi/WixUIDialogBmp.png create mode 100644 msi/build.ps1 create mode 100644 msi/wsl-usb-manager.wixproj diff --git a/.github/workflows/msi.yaml b/.github/workflows/msi.yaml new file mode 100644 index 0000000..1b7accd --- /dev/null +++ b/.github/workflows/msi.yaml @@ -0,0 +1,31 @@ +name: Build the MSI (Installer) + +on: + push: + branches: + - master + pull_request: + branches: + - master + +jobs: + build-msi: + name: 🪟 Build the MSI + runs-on: windows-latest + + steps: + - uses: actions/checkout@v4 + + - name: ⚙️ Setup dotnet + uses: actions/setup-dotnet@v4 + with: + dotnet-version: 7.0.x + + - name: 🔨 Build the MSI + run: ./msi/build.ps1 + + - name: 📦 Upload the MSI + uses: actions/upload-artifact@v4 + with: + name: "WSL USB Manager.msi" + path: "msi/bin/Release/WSL USB Manager.msi" diff --git a/msi/.gitignore b/msi/.gitignore new file mode 100644 index 0000000..9645371 --- /dev/null +++ b/msi/.gitignore @@ -0,0 +1,4 @@ +obj +.wix +bin +staging \ No newline at end of file diff --git a/msi/Package.wxs b/msi/Package.wxs new file mode 100644 index 0000000..7095b51 --- /dev/null +++ b/msi/Package.wxs @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/msi/README.md b/msi/README.md new file mode 100644 index 0000000..58c0a8e --- /dev/null +++ b/msi/README.md @@ -0,0 +1,7 @@ +# Create an MSI (Installer) + +From the root of the repository, run the build script: + +```powershell +./msi/build.ps1 +``` diff --git a/msi/WixUIBannerBmp.png b/msi/WixUIBannerBmp.png new file mode 100644 index 0000000000000000000000000000000000000000..1c8fcbb697e5087207acde905416e639b4cf098d GIT binary patch literal 3273 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 literal 0 HcmV?d00001 diff --git a/msi/WixUIDialogBmp.png b/msi/WixUIDialogBmp.png new file mode 100644 index 0000000000000000000000000000000000000000..592f03c0bbbf6f13b48dcb64fc6b2102a64dd257 GIT binary patch literal 16035 zcmdtJWl-Er^e#BKYp~!J+}#PmEw~OE2sXI82DdliwhYM`pZ(!jSTb+ z#ZgYr1pvV8eR;tQI24;he|+mIt?R1cVBzXv>iikt;o-q%Z4YuWGj;sT=HP6ZaV$a% z08j$tr6e>xmyX(fG7Ufbojl))flit~)1|GPP$41*eF+Qu0WC!w5xbx zBENrAzDtUKc5YJ=oI;LPu{7r`7-1KWte%UY%*rnz5d{ARnF?M`jw_A!TiT+J==#M# zi|9eabv7_HXgp)y|MPgZD5#=6)vG<{NQZG`A=~D9hhtSgzYTcvI{eL|P@g{_tcdUne zx?Y$@f4w3)30uRiAs7Smo;pxb*ZrZ?`fJG0!b!2V5C;jl*zl1BT+YMoSQV3_n!L?5 z1hk!+{DfOhBv-|FGrX7_AP3c&}FbJ>b9lf_+|^RBzx{FLBh< zSNvPp#E}uN48|3P$?Invb)vl^Iv#1SU?pseF#^`xgn(1#CWM@TBSn2NYRVV8>g*8% zzjyqbA8pFiiMDqSQx0nqH9d=vXfHi8N^3~B|8Rc*zGKK;ud}#8@;+i*zGYT~?(LFU zB;CIlO_Gcd<_1|a4siw~4bIO0M2~5S=H!R`)#fX1sPFGpT%<0*I(l=U-@5Ns;Ox$$>;Xi@{QDx5l)$}=WL=fJ0u~2{sa2=dhN%5Mjy1GzBcR~B|Tkia#LOV<2*&x zkgTbu54OgF@gzAPLdST5Gu&~SjxR>piCzEP{il`~r8pHuPFCLLFJeg^IY-Lb&K}Iw&K%^_XAo#>v zF~BL?z>n9b9qQFI2Sem);_IQ^h5@j9mVi3tQaK@dh&B!6gFGRrq(|9c&Z1xEUD4WU z_+g;Ti&$tMC@H+#NT!blU~b<~F6ibf#pQ!+xhfT__3_-86UUH&XK#g7o7Efy`~y4J zpw=*uKOrV+%Dj_@n7HxUv95IZJEWtVBz-h!q<=^t$io_5xUO zXYyYBV*Th5{@p;&=jA^(;Juia$EC>61a5413ci_p5DZ+SR?APaYS9bzD4VRa$hVG> zFOEVb8i-ByBZ^6n&=`l zSs2GW>rrFLeedB89al1Y3kih0pI!vdicfn#*q&OT3jFNnD20KHh`5He=Y=h&Kb0O? z#7kq%!}g#cy^YHF#++Netl{hVTucE_Ff199$vG|5Ty-OIzi{^IN3=9*au9Tiw1?vi zg@bZwsnfIdOh7$98W=q^p>BspS32llRPd_OS?YJhUw?UG3V4l0iiEbTM4G{QYuoDX zF&N}+jadG-1?%VY+1MY5^i)W5p8lfi-a~X}n!O-OQWdDW{6eEr1(Ur?l(Xe&S=BWs zl4z5zKg?%w-1wN>*9eWHeb)XgB}z80kH<0E%1gy3xy@94zh0g0HuiZ@AbniW@G^pc zu()gnjysF>?t!j1AN>aujkVys>*nA(FBEK!!AAobxui6v zO(u7h%F+0s268r<{i9C>nJ;ua*3T8_J1Fi%>AJo>P(h}ODIX9lC2zs+s>aB-c1sbW z;$9~ml?Ta8AcO)F3d~@lE{LZ-jY!qxEg}oL*v%0bfcVh9-Y)L_E1ai-lnNyLI*}$U z@m6WqZ&vO6wFf<+iS**bi(!H=4dJ`fHF+@LFQ!V6`QB8N0tJdv)$my|jQZ3rS{)Zw zF#oyJRn%T%+%Ei^q9hOS2aNy2GMoQ;QeKlxNp=*)iQi7w?IFRFkw!nRu+#&`QMPJw zJAz4C4@L_gg-FTrGSV;9cZOZEV{SweUYRYg5ns*O>d#0VQ#sYR!5#bl6@ae-l`Xme z9w?qrptynNpxStYo;;P+fA=UbTQ&1)44DHcQWS-76zox%7THM7O-Rp@6K9>JRi}f& zL>I~DS4LC{L`R=HJFvXoYLIo`*pW5rnR^r~N2csgaHAd;*s{~5IyTb4`wR3`WjQI? z=*$KK9CSsIWZARguK2KywBWX-j@^tobuX$to;k=@>PYyXw-6rwL>ew=%$vN&F;=0q zm6v_C|55=PRLtNnVsPNoxOU2CUnu_){)pI5OJ&!oCIVnL-o+}{Sf6qz)F)v3y~l62 z>q02A+*BFY3!@=)>rI{W3D(sTX}th+_|9|R41~Lz%)^k(XoPPOn1?c0%eUh2)+mBm zl9j499_d+sQM7GhkDS=43^l)XTi=>w^*Qa!vF(Y^SqKf%mzg;0f-Rx08__@Xk9gkM ztZLg7dwTnV(?sv0ThD%!E^6L}!KVCyCsX9qzbp7rz$(QWm#x)DKQ0QtOD;^2b(Fu( z=nUT37SCRY9ACY|^S@dNaxAObVpy(r6Z>1C#$)HyKV@%lQQ7PC5T#eFEz{{;8IT(m z&=SBbcD=2<(AG&VHJ4DVG1vBCy}VZNNW z@XO7TKIt-xEnt8n`bQ%{OQk%-K!~B1f%lHH?{-bSfU^bA)6ky_!K632D4o?)17MST zxH}aonw44q_h%%c#?>+unE)<&KtHMDq6&^XA}1$e>CPM47fDbF}sbi5%I)1 zSmXY=7}cVIQZsY$kM@7$E+k>}=$WA=iZs#ifT3#=8Zhz zEwpjguy%>JU@*BbKGoTXoRBu(Wurdhz2Gu(!Co%lkDvXlZ7UHRHaPoZ2xakD*$vn~ zE7Q4;^W13;^OMKAv>f~~gktG%8tNfdOUmKEXhE`I5Ssug^Uk%>!qIumM%x>LZ7dbT zFHv~)+HQ?YF|uN?v-4)*;voU3uaeBv_j{*K;tsC@FQH=Vfr2+PfD$d_1hH0BJ)`p{ z9CR^m1vuyn(y&4pSdWYLdT);u<8q?;%d`1SLn0zdEgf$cnH@(S#tbOVz8CY>kM2a3 zdMmyf$@j~_$t4mT4}@60Uyi%w-v*u18N?j-sYf8z;tVN#?PXEFRg8nzn1bbmZ0u|* zXdv%rE`&wfuK!6+7+qox*OPHIlAH)ytEnRI9?~VR=vXeR0`2`<#ul&Om1Zhfw#9e*}H zr^VuAKDYGkS*Ms|CmbCoFYS`p1y(^>k^PB<#5#H^X>(`u#yt`y}#`Nvy%Q6vzIHUG_6~#}jl^hZY&-%(Tz{kuCN%9Kg#}=K!R8W7%hc*pKf<|DM0=OD z1YF9S2GCdRNzZ~td3~;r`~0p~!-Y@U-o%Su5g{TWP0r1Q^-UbZNuSf#lHawP4PZVTT8j6Qd8`CkW_uxCdXr^k zWeM!0nw`!ycHj??d5{VT3j>MeGTm=j9`3`kipvU4eiQ)n!!Djd08hXIY3Pewl6!ym zVIQ%q@Ns=Z%$cJTaDA#v#%%Svu<+g2$mzifxRE?u?-ajmUv}su<6rZnS^HPSzge5} z$TC-Hxctu(&CE;_F=t-Vf~%yJ+j(bZ!lwVJ4F`r#Yp zm#;$u1xkM2#jFTCC4*6h-wdM)_KE?&E!_BG^(p*sOby%@Ki^z6c4obC`!z9vZQuNt zz`z?)sM}~yR$h-0-)bTwY~e~|iK5p+-S)G$_mEE7q2pwG4(QO=y8dWi4s2wj-;Y>r z_1NwwarlKKb_!#=R96BK6|ptqFI5X~Y~qY^+j-vPb1KQxH|!TjdI2*)ta4L=_p{M( zpwYty{AfA@v(*9~oB2w^rt@Luv+10txH*(%5FSbjeCV|BDxeq2T?sVUmh zj^mbt(*?8mdS656es?k)`a2(fck+;(OSQ&F+JM*H-Bpf=4kGtio&;b04%Y%Ohd0c| zoJkkt91tK5m1A-d;}P}Hy3+vJLbaJ}Ex*N8IVK`*>F9W)^)%gz+q@wWWX$sM@$u&A zx--7JyF2+Duf*om6{&U)luzCM-~#1^!`|=<{puq!3m6NvmRRI||0dN8`@%3tz<&2v z1k?-vEZ(Nuoal`~EkDL?xgmCc>A3UR9~}#;(cLbcaY|8M#8;@N8y%XhkePcc50n+F zq|Er49v&W^F?N#7$-y!4fmkG}pq_GnJ}lw>c(qlnY*xn24!R`P7_S;Q5`hp@o>2wp z?$St=)>e}hc75NNA|;K+qBWUQFQ=FIhz9O>JMed~2@}}5YmEKxk!F|O z2Ah3H>>sf*q%YZ(1J3ZUGYz#E2I9k`qrU0^a^X_$D*bv?Gy)bYs+zH}pU^$N_-HbV z9@o|ZE>5QJ`H-@d@dAPN)_h9L3dK^4DNAeqwq$B$}-S`RIsdIiXCw zWFs${t*2bCme{~hd&<f--9m~OYn?#mtj?rJ@t>FuM5k;g`@B&4Ct>;yf zoxJ3oHwbC$d_1c5RUBsy)=&|}H@=%n;c!@M%QP``vg9X}uM~`I3i$~!YuYkuab@f{ z4P`f(E!7%5iA46l_6Q(^x{h>oT5zzYrv%SvJLjuBdZm-3{7XZptbYwBF`vac_`>Bp z{rg${sSnlF-My%^dU<)d+Vkv_@4tMCK97!ztQ8sZz67@^N2x6gnLJHTv2-@v&WMe= z>5skf{{LtU{BQs2)>)}BwX;(19UlHl=LI<))z5F089y=+uo(zMwWe2T5_S#gzZg)t z(pn+VYN8!I|INrsvy0QLmd@sj239@RV+SY#NIOn?i9+z1wKooH$NQnH(+CAtTCD~I znKYJL`7beIsNiRp)T`2{&h`}QPvTbgVhW?r8wZGrod#iT7(ZVcSKBS~6*DmHWlieL$@Mvj^_)c|b@}tdQ#&-o zUvnAK#}MbxOI~%EB+7cuJFLH9+ouak`#rUKOoQu2ZHsm=zln9+>onb9dh}4CJHr_h zb)$+uQ{LUs%_lcNRg85U>Z%k%gf+LMyAbt8{^b5+%X0XY zLr~+{awHO2?x#2C!dxAv7^giuJ#h zoBdNPDV9AskbyYp%s`ElVhzh-`&nYSze>`kwa1%Zc1G=s{Wnd&2YuROxvd7oMK|`g zoGMwrQ{si*b=2Gn)dlI7Ayl2f|zGC0~|Y-b$VY{w*zvT>C^Z z(Qu|1SpTuEJPzr1Uxj@*@3keOM^EeXxN6n?1kHLvbl&O#Gp@%$epc|j=4vIwcJdFX z5uV$`l)EIXN{Tw3J z3y-YFSYs>#FD77?JW51sNV`|l!v$h}*n}$=?c~i#R z*S~!XNs;+8=QWC`*fKKR*gJPnIImrIpaZ&QZ(UJVJf@Ytu|H}78_oPhe#EJRVnWI(=r$u zEK}4T<_;B~is=?yxcQ}wXbWb?>VltsTDneN;^?8WZLLMb|nX#EJldfo4W4>hz;#LzLxxtT;!7c2m))$7e{S}-Frc9a3 zb~rDms=bxM)HZ8|ZX95y4#~fQ*~TX*$j^;PWnzxa3iL*^EYPy2Rzb~M_)%Z;p+Z}& z3=I(!97NUqL>02xBH(5P8*1%U*;3CST-#UteMQ)vgXRU4jZEeeu!yJU{;P0zl`O=t z0i7KucT^FPWB#QJJPVAXKNaaB>Wb)*vTMvw((A~zN4ON?IE3qUlc-=jwWHqCJZ05N zt<-ztLV|YRpl~yOqdotkyL#z4RJpbbsh|Ryj3qcgQS7*&C0jUe)`a&c<5RM$Oe-e( zhwb@Sb~5_NTy}iqXmPT^8xOHTyFxx%Z`IZYDQ>m;YcoNV&<{XAfMmu2}mkl&I0Zdtg{rc5GqA1xF?Nq)zHYnsy?-qe6L<`vm7?#LsS}5H8*SjQ^6rcK(yps2 zBv#=JsmaQM+8)0Ct_u-QvT0R82;4;FX9$nLu=?5%srzOdPZafuW2JXLRjSwUN&eK@ z+i0OX4^8w=z~LQR!@uzl%Dl<0rnJic;TD^`SgsXpArK)(-Z9mBZ}j~x0Eryt?)Ys& zP)(kD=xT!}{-4zAE(KotKQ+|VQ}cG}sYPSHylrg%vaiHkM}diNE{pSQ7{CX{LEQsq z|FRK^d%t*m{OZDcUHhuf%nt{!@;~v#%E|do^Z@H~fk*4`Hhwe&^~{HRY9$Rnwihm_ zKy0DXz#?MO64%C9{@LMiMNpHiBCnxs(JZ-=_@iX%?UKu;R_Un-dlI5Y;gJPG&G@w1 zCFVvSiE7#W>7UA5Fq3lWAcOS_{~OR+NJHivJ3=M*vWBto$6vU1=&D>+{ClXdS+r^B)}o{4IWpV>5*h1GXQ$AFeq z?GJpnUD4~Xh!j0RORge|^WRzxZ||8Pwumo)-TPOf{RW*=OuPR)?jhMe;-UY>Z53?& zPSWP*1UK4!-Gx?{tg2SfKptXWpDtJBAthD!UdN0o%!*Wc|l zxf>~{!Wj0UJNe_L%v>dyIZ5HcDrYVv`&$5(;cmcNi#}kk9k=Ohf%>w2?{@=Y1JPVF z%q5-9H)#GRLL-6@*g6mQzFnu!S?$@$I~9+9T`u!*y(%yO|EEJ#^hKt;t73V@$;0-) z6aZ){9)ZrGbuuRRM|v43?!zyCV0Vk9&bBi1v2@=|V2VAUCMzhu0a7+ChxqlM96q`mb6?47#+UmZ`I6C79WX<6E;YJY` z_)60BkhH9EIDd-M!`;Bj+4s93Vwu^>nEWDIz=oIZ8%#d{fSmTF7r@8~Z*4kyKcPx? z{zp~cX~%Qe4?_OD4l|kuKj9yI3)}iJNYmVeb{9H%W^2xM9^>x|my#1*XhAwlqj~#n zZTJiK4B*Refva$Ug=!CS|EHD2_x&Z;iqwz~DlSv6!A6Z*Z&7MoI+2(WrU8AVi@kv? z(go8`%=7mKTo-o^BIYBtYL*6(VQWGy^FBk3djK7f_1KGiX-RmJ*M;qH_?t<^sPz7# zth-p7Rfo3}s2nK=A-fs3*e=Sr#o+*FL5PF3nUfmgvnR8BMz_j^&xG-ExMv&a%Guk2 znfC`dVIyEnIINg&Hv8wd{z)E7%l>_j&3JrE4*o0zen1PHHzd}RZR)AiWIFZhbhJ*{ z^#afJ#~(gTe^%^?QeTtKvu7;5x(~9fM7&zX@8nTE=vP)DjeeYii=mv);LXWq$Q*-u z_6NPjk5el`(0UcC4SobH6KvPUdLwz*`msS!{;oK|lP`uRgyj8aPVhgPK!}|5{OFe~ z{Hl6_{?rd@mY!Z@J&Edu$d}QFtFSJp5~(H>b9AQr|io z{VkUc{QOc~7G+Z7XVP&m?e2qr1WTVD2C+S?WBmLy`Y=G{q&N!K6&(Ph=^coW0<%_^ z39kL%8k&_<&kV7sasQi<}dCG>x`g(;8$7FKSs88pn2ZenC#AfWkvQmUF5x)ERy{3 zDG>rAf3=`c^fTW_XU!q&HN%s5N*qcyV&D~x(vjSCI*#GK(Qn*=KcC%>ku}>s_QTiY zejdDe6&?50%mTxT8vU1{GZd!S)spyqn{kw^oxXcBWXI*Jq?<&ipwiG~vMxKEusD@#(gd^P1bB zC;8ZK2TT@Jb8}Xi0!_~*G|gOc_9pt zB3`Y*h}^PmgmxnB`zSPyuw;Pj>$HXL+ig3~w0BCjck5FED~#d&?~Mb4eAMa)?n(@Q zJB0u5mi8%7%GQdidendN}w}y*NKRe0Ja!GSWAMQ$o)L^+m1@7r0l;TGKm@we% zqH(jtk2}y4j4R@dp*FGS4>iHG5v52>i<0{8v2@T-LDwd7YZ3m#$w2%7RjvERRDEL) zckgZQa)-(7bVmS^g)!ntfOx^hgyvnFTJ%)SU*pAVULSIL^ckcp2V_2)ML+J16Bf}* z2j-h_FP=FeC z!PMmWTi4YIpw$7^MunHWr#QUT|6a)8e&c|{oEiHK+dNmd$-8&QJ^c)6-Poe9=wkuS zHZ~t5f9EZ55SkxBjJ*J!VETI1&`tgTStZ=)=f5@^{b2d%me3T&4;T;NvMQKz!8E@@ zcz-?l-p$`p>AQoTo;HS&JKLlX$Abv?8pmW;9Pa)Y9TDS{1j}rux8LAwj#PA04*!ahLV71rtKh>F!cjCOMgHp5Vq?+7yuh8XtqC30}9iCeLnZYjC0aqB$w8snOE_}=JlpFB)ZX6q=s@dS zyQ9zy@??K=yMS0}hCg*y1`g+*%Tux}& zvEUovR>abmkOVNSSd!^rgpfV828+#)252c?-Hh%)TAl^35p_i?n!tvPSW8M+F;$6@ zkCWVgksm4L>CcCURrd85(@rze8bC2F@-4fd z!A(9py7It4z!ib5rxVpv=lnC#Z*Sv3rJ8o?3SwJtYeBL5>Bh~u(eO|2nIns{lJiO= z({3li{^bs`BP$%YJp#qf+>m&7JdW(+%=(L_wqV@E2x%+zqtTv2Bw;1!y!DUt7 zBRgBa7X5k%KlvR;%hDZv-@uwM&zr^yaU5f>Q@jV8`SM)cc81F=o4_rpnf)<6`u^m@ z_WayeN*&+TQeD8!u1IZPt=6sARF=#s@79cHQDu#fb*LYx=+Ft+WiyNx7ldGvHd@h? z8a;l#U68!wTWS1^@wC-Z>v+=8M^rbfgrlct=I@=JaAWd1F;pBn&Oy8(Efh;Y(!$9MWHn zW0J#enq|yhEPof+r<0=I>h`%bd5>KR+)8GZGF|8Ek1O-8@YiXtp_8e?8g3Gqa(|9j z(O;f0^NEQr25fg~pmpk7fn@x2iE^_RHY;FuW?|5@@08i{AV0FV5>%=~GOxmI;4p9; zblbFBLUTHPFux(5Z5(0Pd(_P1fve^-HkXn%P6t^K)YE3QS}Bald-16|6FH%{B3?qr zfvnL_G)Trav=D~Sa(@G9``L|9eFT0{KRo-TI#e{FtBsj=K&Rsc5z`lCArU_%KG(V>yQbc@f<5nySPsPiDpTi`W!-a6Y$BbFNWiO+Ztm9IjYvc8>S_nf zI~y(ZQY3sh&cwJ}95&t%=KW&swB-|^v$do3(n*2RRCA5fYttaNZPB#01W$!@RjXpl zRJDh~mXp3gZn~Thc0J5YSiI_z4QDPnqRo+~{XNf0?ISjkuBM6UubvPLB*OI4kt?cG zt&Osv*#d{gFD`#^r3c5vW=bxn?U$DAJQH!;)beZQq(;H7K=dpM%q?WkL;|HTWg4zK z=_?;%P~K%nEGD^PX9;s*KG&D;; zCdc%@^Sorn-Y{BQ%k$YUi2&anm-lL00+l%>;!jWgP85L zqk+cyTe2(d%?zc)HfZRi>#w#0eXnO^5AGXgIpU86@nIw`F|=siHC!)D zN;W=Dda4h{VdM}Z(1BrTN!!jX=1}1rgNYk$mv&xq7yyWM_y-n{CN59uH2wv z##efYg{rM+JN3z%pT=7rKS^+QOCKCs&~z~!r(~$7Kzl}T6{c-Yy_?q^WS;&NWyQ0l zscK)2c2#cX9UR)L>S^Fxm{WP;iqwI&Non6)^NY#Sb{Oq>*aV&EilU`r&9}eGBz~9C zq3MIUDW(;jvJ!Gbr?Bxje<_pG(SNI{ltVwp&8;$+Nhj2{u-6}^c206FV3GTow<@?Z zBJ-9SHV6jWPU|fn2j`>(iIF_}NkOyxU68@B@Sdu6ow0`ng~KScRguzKIpEi!&-Txj zRc>dbXVRC>2m3TQvK=b?6@ZpFg&<#ik;^A0ybQ{ee)qmCdA(>7glLPgt!i{?U;;2p*jXLf$xqU(>3KW|^FqHe$UbjHYt57z=P;C0{@2>4Fe zkSkX|>x|N3d>?bLWG*A4LQ<&>=7k_Hwg>kNE`Islsl=xHQE|!6o;sG=v@Y@79#?rD zu!@?mb9A!)s8f3Q9V)(W_>=N0=#p$t62SS9G2V_UdXgmTrxpievvB3sFi>s?{v@n! zpS)#u#P*m7N;fW(^uK0J7_^YIX_0cnIW#yD!gzUuOAKA*stoPfrh8pe!unJB36giV zKw>|QcdHDnow#LS#ZrPS8qC065W%m5CM_76Za?IxSq%5fqrT^x9OGZdqTLd_-ucKe z`kGkcS5@YlrWvubqNP`BezI(aRXN_0S^v}IftK`k;0k1?AK!yS8Kf!=Fm~*IchYmx zwoAs5ClTO4xu#HK&!js8m)U4R#{^EZ64)M7N@&E3)J(K-ishf5$ovXysdt+7^5Sg} zfD7|f{TlEF9&y=dZ(!(W2O7}$AL$S?AfyyC|C4(*7YF#(=xP7WhryX2T=i@^l7e?} zzW`m~mMpn}Y8dy9NO@e?nk*)^x(00NLgZi9FY*TqZ|6~`W{%a+eB200m56=W-)PB- zQzF2@R7;4vU_>uYiJNV;>XeHFq!Y?kj(1e=1mD z8>!2|+vUqo^@XD*`?N{u=%|3A@v`@r#$Jlisp3*%wU|2nfIMDv>v(pJYt z`|C^g)Ndm1z+kh6a*bZUCpkN)Df4NaS{d#@hT8UD`}v->MvwBWCFsiMRzhx4aJ6bR zXBPYf)KHw(j~jrVyGoymw22L-TFvoa&=7vq@)6h%jEF}Q-?&d`)i}+Nqy^C%W`BuFi9XiOl)76R?vGP&TKktv>p4t;4~B0 z0+Cqya-T;+zMb8m2LEJ?mFwL%#xK}CgWgdHb51RdxlTIOZ4;Dp-^1YGhU|(bA1raH z!l9ngl}^T5u$&U%;!bNgm|@&1uxtgT4W{Og&IyK;Nx%-g*;GAvzt(NPq7dZS9cmYA zT(<$s4+o4kkpUf6Mnc4Lv^acGG*`t{Q8pGOx?(ki37#qmJNfKI-7iohdtpIH!#b<- zVJ__N#D3iqTZ(;xiFCToH^Rua2j0=Fs?B@ZCA7N3i)vD6`*IPj#lB$;kLPR}@S|M_ zq>l2NT2Z7l-2->bK=bxhUe))rw@@Bf!fuv(hM=+AyZ)2tzEUPjolL5n<@mR!AR$C z$0_YeyBwl^wt79Se}xZk@$4!%3~qYSt>sH9HThYz6bS$1i7o3xTg!tCA6lrhDg;^b zZw#`oqN=1TRVgyzel&LSw6~sYn)I78SK$akD0>x|nC{%iXA(EuSmK!C*o=f!M?DRD zpb~x593rQU?Ii)+N*Jr+WPt*Z_!Pv-O6xFKWD%NTPci+HA!a=HRP9ENQ$LD8w=r||ka%0- zl?aKx1tpmukV@JyFN8ze*M@Kjbr-MuQMrzx6?;|eqCBvwF1{|&p)g0xLFZlL&1Dt; z2i}CD()Y6keDElFdT?6Z!@UHX-*Rp^goMkm&s-)Q8&X-=Z9_x5?L5Q+10Dt_dae(~ zigPg~L`T#~7)pnp^!81!%E^6?_p!{@4%w_&uIj*9obrxF`GE+UN;QtkizHB^VmJuF zm9yL_%ij%l9p^13QOfa=DiTC-eyKu&dIIB^L z4vqWqw_c?qbUe)m#0ww$!V>2&*Pey>bW;av2YO@t%()UWIQMaIr#?T&f>^*$1vLdC zSiFFD3Kla_tqh*w@sVPW(4212wgCkcrQ-)Fo`)*}Rl=_QMH3Cq_??@TDiljz^Oe;$dRY0;ks;iJ-?MG*nRX z6Z$D8MyT^F1qe;0!dpAgYAkOGPpOsg2vslJySh$->Rgq!DnH9db0$sQHJyel--HbD zTDh;SVeA5ren2NNpW^Q0JOA3hj_MOaFHr=HvA{0Oon1_0F29cwP9vBr`J8t+S(KJ9 zMg?jd^iBJ?%jU2`A=zux{KTk&NV3iM9_5c#6Qe8}lRf9d z_gq1g%tC#dRdX6EADhfiO>JNjKj+vMFz?b${^^_6ap*Rnn3GsH12Iv7TG1>wU+Q6)(~*~-gb&!csl@z)HWNizeH4_R27Qy$SFO4|GcmWlj(=rPn+4~uL+%Nss0Z_jrObBbyz)0Fk? zY#btqWk_H?tqkhn0Y|#`<=KcBoYAM`mmOrB9`IU5P&pM-%=yxM%qlY(%hVG%VYLkV z-KgG}FG9plRwW1{~vUd8tz9_B2Vj^UWp zW7vC0uiP7%uaT7a_J;a$WsB885Mj6NmdA4|+$_#9pkjvT7eujgb3$?-;0y1vaBBu) zCd@;BtvLI8DIZ@EF|KJ42g(77JnqM`$L%v}+pc0}uo>24#8Aj)es+Ho5^*XT+{U-u zM<-NbIi=N8MOn93MB*YAAC^H!FMB!q{L>6$IqWdBBAnc(o%wISdf$8&xX#4Y3n8oE zu`W#{fwx)_sxUQYJ|=c_Dj?A=rPuki{X4-EJrCmYd6qe_xXWhv6d@Jz{L{du zJY*l4gcIDr^ICWb#L88($=V^KRvjYza)ZYttGWx5xe_Y}UzOJDX0C^;G&C-b63?9L z*o!r22gt-;{R%cMMw}4yy(l%e&b452 zDZUlx=v)cqV?=tLENmc~BS)0)8r^>-)Nn!&|LP5noum^y7Hw4y6GX)IgCQ=oZO9g*F6liNn2cHB1z*fJ)Y|+?x^mhXLBdZ zX|~W>g6^n@TBC+oL|;71NBR6jgEfAz-ZpL8oFu=_F?MpK&7$EE+6B=wc=s2hHfwPD z4IB!g9;nSpdgiCp_D7Ta(mC?Wq{!vJt)@-}E#r+mG1bwa)(|X`93Yxdcr7F9>js%| za%~c_e6C8hJdI8bdTX300y&K)x<_ik{gTp;C@HQs;+V<}NKS8V7BOmR-`UGkFqmCT z(ODyM7`2%;a4R8W^+deJ)DZld7HdbXP@=x+1O5#i54R5$J&kG(N8mkF#P(IhR(`fG z5>reDo5xM>KAtje>i^wyi@jdNmRotJ{6iI_VK|-VR~b^?Cg0aXz^4Tu7)=9$wy%n* z6Gwgz_*j4*vKijlYi*B;|AN=C_6s32UW$CY7lxVP>J2*0K_zs+`7o#{>55tbI&Yc3 zDihB~Qdj&<45&k#44N1}wyZIw-46}2cS>xw$}iP!jE<|MVcyhiZmPw%bpD{6L;uh` zrPCPDS77YUU@?|DeVv*5eId3&UYB?lq7C_n<=&ZvD&wD*0FFQRyT_0+H^$QU3;1otnoCDS zT w$@_nNbNGL~V*G!6bNK&P3mg2i@eETDKZ-YSQeg_cU=EO%{wP)X!6f+q0*_39%>V!Z literal 0 HcmV?d00001 diff --git a/msi/build.ps1 b/msi/build.ps1 new file mode 100644 index 0000000..273e406 --- /dev/null +++ b/msi/build.ps1 @@ -0,0 +1,26 @@ +# Copyright (c) 2024 JP Hutchins +# SPDX-License-Identifier: MIT + +# Build the release +cargo build --release + +# Clean the msi directory +dotnet clean msi + +# mkdir the staging directory if it doesn't exist +New-Item -ItemType Directory -Path msi/staging -Force + +# Copy the files to the staging directory +Copy-Item target/release/wsl-usb-manager.exe msi/staging/wsl-usb-manager.exe +Copy-Item LICENSE.md msi/staging/LICENSE.md + +# Run a dotnet build with some environment variables set +$env:COMPANY_NAME = "WSL USB Manager" +$env:PRODUCT_NAME = "WSL USB Manager" +$env:APP_NAME = "wsl-usb-manager" +$env:EXE_NAME = "wsl-usb-manager.exe" +$env:VERSION = (Get-Content Cargo.toml | Select-String -Pattern '^version\s*=\s*"(.*)"' | ForEach-Object { $_.Matches[0].Groups[1].Value }) +$env:PORTABLE_PATH = "staging" +$env:MSI_NAME = "WSL USB Manager" + +dotnet build msi --configuration Release diff --git a/msi/wsl-usb-manager.wixproj b/msi/wsl-usb-manager.wixproj new file mode 100644 index 0000000..a095525 --- /dev/null +++ b/msi/wsl-usb-manager.wixproj @@ -0,0 +1,25 @@ + + + + + + ApplicationFiles=$(PORTABLE_PATH)/ + + $(MSI_NAME) + + + + + + + + + + HarvestedComponents + APPLICATIONFOLDER + true + true + var.ApplicationFiles + + + \ No newline at end of file