From 7f302fccbf11f5fc3758719c9602507658ce54c7 Mon Sep 17 00:00:00 2001 From: Caelan Sayler Date: Sun, 10 Mar 2024 13:03:59 +0000 Subject: [PATCH] Make icon an optional parameter on linux/osx --- artwork/DefaultApp.icns | Bin 0 -> 5827 bytes artwork/DefaultApp_64.png | Bin 0 -> 1708 bytes samples/AvaloniaCrossPlat/Velopack.icns | Bin 5595 -> 0 bytes samples/AvaloniaCrossPlat/Velopack.png | Bin 3464 -> 0 bytes samples/AvaloniaCrossPlat/build-linux.sh | 3 +-- samples/AvaloniaCrossPlat/build-osx.sh | 3 +-- .../Commands/LinuxPackCommandRunner.cs | 3 ++- .../Commands/OsxBundleCommandRunner.cs | 2 +- .../Abstractions/IPackOptions.cs | 1 + src/Velopack.Packaging/HelperFile.cs | 16 ++++++++++++++++ src/Velopack.Vpk/Commands/LinuxPackCommand.cs | 3 +-- src/Velopack.Vpk/Commands/OsxBundleCommand.cs | 1 - src/Velopack.Vpk/Velopack.Vpk.csproj | 2 ++ test/Velopack.Packaging.Tests/TestApp.cs | 2 -- 14 files changed, 25 insertions(+), 11 deletions(-) create mode 100644 artwork/DefaultApp.icns create mode 100644 artwork/DefaultApp_64.png delete mode 100644 samples/AvaloniaCrossPlat/Velopack.icns delete mode 100644 samples/AvaloniaCrossPlat/Velopack.png diff --git a/artwork/DefaultApp.icns b/artwork/DefaultApp.icns new file mode 100644 index 0000000000000000000000000000000000000000..452a89a62cbd419bf0000d06aeec347237fc55f0 GIT binary patch literal 5827 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 literal 0 HcmV?d00001 diff --git a/artwork/DefaultApp_64.png b/artwork/DefaultApp_64.png new file mode 100644 index 0000000000000000000000000000000000000000..1c766dc3c253b6c8c4988ad624163e83eaee239f GIT binary patch literal 1708 zcmV;d22=ToP)=L&VNka3aIu`8yC+?w(}gxN5jaxF`6)7E!~LEv6H)rb zp`>!&i&q4(WYKjl*m)_lgxdKzNSGx!2@!6lNidxf+AFHEr%;t`1pw$~@}QfMuh?Ko zu>u(q3CC`*=Yh$LIj7TCmM+ril10}!;=PaeyZrmSlv%>jna3!0)4r3Pga}8o*TN_! zeRZuWEm~E&fJUxPuEQz)yCIE#^+_vs*MGpNL($@J&SU?PW3W!!e02*Vv0D^8;C)6t z4R9U+B+L>zpH2D7@^nXt^8oOE{y3_#rvmCSBoe`$2LP!g9Us+i52#C9a*IX5Csw-t z3wwjyMYr#GbMC_x8}fDuFD1o_s0`(kaJGa9kZgnqFqjs8pc+Yi!*_gRx^TrC>Spo+ z$`4HDSZ(8+;d_RVx)1@*OS53|8|(mJIz^1Lvemxw)Vvg@MmC4s?ANiXkT=1c(}`bx zzZA34Tw#4;!(Z11Lh6a_d-pNnE_i3b38kCHbcz^*X%aYy(B2|XclgGG8`FiDnwPF< zKwfSR)~;C-tNn2k?&$*&1V|Q=eh?H7$yOfFk^%8ds&MJ)%Rth1f!6{EZGh0c7C>kN zgeK_)V7>UMkWy$?EvJ)&?OGUk9x%ht;{P1;`|6RAt$)v(V_XF2KNO z%duX=0_~GEtOa1*1@tpH`23%p*nDv>dJNUD(SuEBjiwH(hG^6)#?krKEfi)@(cOe)cQ}4) zQ%ueSJVrn`YVs^-Ej6H}WR$Zg(AjdZ?Lt$`HYHR5FRMrzEhPrDS86>`5r+tkmv&*m zQV_E(f(YPG%~}iEE48REGDa=JPr7Ox(bUA%zTn>hXdV|p^SA(t3<|BK2J9&vMWKv( zVgEN%GIR~8<8EK@2na_*kr8{!45%+Mt{4d){<#YSld*@s7r`SS9DNf?^i3$C$e_@^ zQHwog24to!Z`k&kl$@1ri7T zuH(#R&Ld!p+=4B+lbk0#3_Sh+>uYs*Mh9-)#RI1cB4&pSO;;PS<4P0GkFST_MaDi` z3{&o#P~x&l$)(Bs4uY8^jfOWpbA!q(TliF#WhB^LB`_+>WDA}uNZ9=S~Mt(00HQq=HSF|{ON8acoje)rEtFXQq=E%F9$W;B|Iy^>&A%L zA;Zt3)iJ&Q&)lnq?rCg`9MQo0&QP~r4Jyhd^oMgYoVd$x=zHN^0K1Ds$6#Glncu;G zYhmXw-Hk*-_6GYODRIT3WFq+SaEz$CO00%8&YI4iUj0&-Ra;3R-yp)C=BVE`vZ%<0Zq z0JTUi5rzTOGN(IdMF8L@!ZEzsV}c1DA8VicjQ;^@a&?RKf5pE50000L~)h#8x3@@j6#L8Cl z4E21#F*yDNI!to&at#Q$DI<$wP@$Xh3Mdv8Mn&wrUC&aT@rrPZ8tCR4=<4O;uHjET zMfIn8yHV{t+l995;)rbHKhhPTG<+TxCO$CxcZ;Jxt3^e zWox~30Wle6lKNI1^Zf^G9b8ZQUZ6)t$HpfzlG2JxD=MpM>O1H41;GZp+i3#fnN>utATzHia$eOfGB~VFB1Sp6x>Jx2%ZCv60QM2xeTMH0FVnk zI#S`r3=I-X1HcA_p)-I`F$|mm1I|z;0leG@I)-x5cj!1ef%1^a$>=G}doYBKA>4ng z=w#Fsn5F^Rzbuhcm%)Gh&`J6fn2Z5n>~AD=k_LU?#kky`*ytoWl?a5n@5aX`U?_AF znVNzZ;L?^BfR_w@GDri6-~gD81<1$}y-V-V353UkXhUP8fAhsmOz;u`ZHYZrfH}KwuFVed&gYDT>?sikT3?E!~0$X$neq}a8v#|f{cx& z{yYIj(g1dBWMp&%zTxo5$Pj$Pp^;(18>02H4ULUW&CSnST3)oawzao+bar+{bt|z! zbwmCCu@%`3+G#-U+230)UbMEgwRd!Mc6D9q2JFi~7Q!_(KY!lxuN``K48S-4Z!6jj zUd93G#{Z6ub|(U<|6I7cR zNdQ+3SI_E}P_F^uYL;My)~5gw*3z^-6^KA1^r(lKSen61z`bgiiE380AQM?c3?Qgx z5CN=GKuRS7)yn`OkggG90FwyFae_rW5s(r=9Q=mrBSgay78sFqi3n?iOoOhm;3_l< z&Z;I56TuZ|g32P0qKU~MQgDhOIK==l5S|IYlb|IET43>!ECIRd&+hK2J3%W}dKzuoId~64-PeHrTqQOIq89@z43d$bVE++wl_1elBjq9aRl z-ZUh^9fLSgKzL*nMtBzuCxY1!WHB;2ItE$5B7-d6a+g@t)k7u0N`YlU?}jV{!fJT| z71$+EGi1@&1eGsXcXvY;&s(5qJ3HYsK$&*5LmIVEGq4b#njww)ztGwtjmCzi=Pw`) zs1b+>X+X8qH&jC!P(cll22>5CQC%&d0aULLF|hSRC6J+71Sup%g3C}UfB@4)qJwCn zU=1|_Ei_^jOe>tJ3X&fKXhgx=5{VFw2;UawR0jZQw^$o1Qz@J>4ger!Zf0~4j;P=x zCIY{o8MwB<0SSPK2lv}n3Vsh6QSHr7Sz3Y(a4rUrXb*rD9DyHY_yIsD7Xd*kBm6-rUI0E(Do6emtnZK_Nf%qqokF$7^0>4>#uLU(ffLC`&rx za$Y$5J!KFn7xEBolfI>3=b4#re!U@dLFg0b^MhqwxPfVDt(xEuztBk(Ogd}l$i)D^ zE!!3bmj$DU@Y%3$pZ)OK5xZw3A}p7sUJ=D0`dmW-g@AHb&kTHHAaK2aa>t@2@nW2E zQGJ~~Cs7J$-_0rivQ`L-33-pSw=P>jz}EyU3-Jzb0@-pLxrh8#on=nBA?relsnxU2 zB(>#p+YIiGWL5;f(kM5I&a;mA?&-M=gv31Z2-mjF z&g)m|`gC|+%{5*6{$9<=-p0Tgn`D2L(Vg^GE73bdWtnDiZ9Ta*w6*^G5-=DFfM%_<*>*P)Enez<=1&=Hb z<&JA7$=S8}-zg)J=_;>$PHuWW)371Jc*fb6Cm~m}N>WvlW~p!7ThtNbR(OD3dM&rP ztlmB4wNm|9nJqR#r~g|QmJ>C2@hfFa{!;rji>M@7R(x8a=s{KcB5NG>%DLMT2UQD4 zw#$-zjGWIMb|9Bex0l&VAdY#2T6}NK7XN#Mh3n5<%idQtUBF)XWKMH==$+qgHKDiW zeQP zQ?R7E%s{+>6zUS@=GW#>b%XGE_-OQlgr(QN{Pbkx?u++l?h4*CfO|s$HJAUom~d&ZuNDMZF|>F-6{Uj#+GO zlAel}xdoQjeI)D9eSHzcYRtnY8R+Z66esF1`l#IUM3ON5)6Ohq@{{uUzN51r*3vhx z2zuY6jCsPW`mT8_D5|?2UB9tVOxH4*q*gd`>)uEf`$$9b;kJjS*`J(~Jv$P6WY7lf zkcF({L5iySf4Y=Nx9BO^DQg)T+fmPyTHIz&U-#UB3=j-2uPu%(h#5J?n(|Q)U!R0+ zxnyC1ZTTdZC&Aj%_N}sZH@Vgdk2d~z|242LW3-e(F-DK6?PPr55N;G7`<4XAJH)m^%Z$f%EF<80Y z4B?;~6*2|3d03vrh8-5g6=Cj^E?NQQI)_^FobWXn)Dnz_-VuLQb(u}UyVPa84m+P4 zDYAUtr4|<3Alb1IqpLUcouR4sEO>lcxn-rfKfP46lvyTviEH*3n~gGOCGL#}zVr_VIK`m%=H#WuOjCKc>gd3K#$xVSs* zUNr14`OjPPO0AHi0b1lq!&5WoPb?g8BH3Gq7Kn)VbeBnHE0YUHdQ29KEw<=4-tYW0 zwU~C{c$)F3i8x0D3tO#}!N;Jkjq9gO3^oLj)bX2oQWVW$=P=#fICRUXSp9pW*pJwW z2&t6Acy#L9m(000d(ZfWzAl~Er0^hid$dj&?<-R@AzagI6*3S56FXz@_JobeQP&c~ zTCJ^W5xa-WvCUBgN}$8(3rB~JoPkmXs*aI4qsLs=AGiZL5swF>celNN)TM{fHHB(*lWmg!(9wL> z++B-x)IG@mv*dSi`W`EJ2TTPSe9duk`o4*2OA^=IM-TX24})kX%{yQ)$a?&Tmb+3$ zNeb_09jjEuR}(+0oh~`&K%khLO}5<4+Yw3HxM?q@Yj?$$dYFln^!z#+c)scjE=J2} zomQ_Ko_&%QTXJbvoa(aEX%`I9p4;I%V-&!R#gPY3Rz>G37rqwG$B{xpc~@F@kKc9a z3XM>3q*9J|#5y~Lxx`Z3E0pzqI*&F~KMNb|FvWUZ0NWbkXe zaSOli|7_mUa80F+7tvdN?`!6yjaufN4p)*|`pze(!q(Czyow`u3sYGO&5MR#w}CA4 ziIcVpTVqGCufE95+G6>_3573YmZVy&9BF4C+RUY%&mM^ zd#rn0?e)sdiP{}+QE(XJ%zslwb;Dg?Ur}JMO25Mxh4-oq+qVq%e&a>%WB!b1`s!W{ zc7`Ou`;aY?m5t?Q{ieNZ<2ZNt%*UJW&2||Bzl~~h$?N_P9CWl{mcd)J2$&8yto#kp_hgNn< zU|cpZB(=;X^UY*8;XDJy)MZ{wT=ko`zGe`L2{lA@75z1Qv+E*N&9zk6Mp>JcadYHP z1+SFH4`i8EuBB9HyVx1QKR43WvZ_2Eo2CrnDJL+pH*$65Z+OX{r(a>X_;U~FP_kxvZZCXd}s6|<=r-uI8Xfp!4?drSpD;BhcNQPH_JTkKuepI3> z7n99=Q{`2uR#Um^kBfTum)rOpte!QUE&%SQ-^c#i&$JRQSoksUKrO7T?kIJ78|8%l zcczD`9NtoR@OC&?$VUwQjYFpI_KUhJ8_^wI5^?8bwp~RA#!=rn#~}T!1;6TUo_@W? zu;$B3`rt_rcjr$%&~%}CU|$(GH+Tg_AKj#7qSz~}U)vXfcJ;UJ!-S|zVV;HEz~BZr r57y&rhI$=Zg#Lg38r1|~zO6~T7P=^sj>{ALV`pw`Wpsb93;llpQgJ=I diff --git a/samples/AvaloniaCrossPlat/Velopack.png b/samples/AvaloniaCrossPlat/Velopack.png deleted file mode 100644 index c278b606697dcbb128878047a01316143d3f5784..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3464 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 public string Bundle(OsxBundleOptions options) { - var icon = options.Icon; + var icon = options.Icon ?? HelperFile.GetDefaultAppIcon(); var packId = options.PackId; var packDirectory = options.PackDirectory; var packVersion = options.PackVersion; diff --git a/src/Velopack.Packaging/Abstractions/IPackOptions.cs b/src/Velopack.Packaging/Abstractions/IPackOptions.cs index 2c9b49cb..e7f112d8 100644 --- a/src/Velopack.Packaging/Abstractions/IPackOptions.cs +++ b/src/Velopack.Packaging/Abstractions/IPackOptions.cs @@ -6,4 +6,5 @@ public interface IPackOptions : INugetPackCommand, IPlatformOptions DeltaMode DeltaMode { get; } string EntryExecutableName { get; } bool IncludePdb { get; } + string Icon { get; } } diff --git a/src/Velopack.Packaging/HelperFile.cs b/src/Velopack.Packaging/HelperFile.cs index 55256c7a..35999c64 100644 --- a/src/Velopack.Packaging/HelperFile.cs +++ b/src/Velopack.Packaging/HelperFile.cs @@ -54,6 +54,21 @@ public static class HelperFile [SupportedOSPlatform("windows")] public static string RceditPath => FindHelperFile("rcedit.exe"); + public static string GetDefaultAppIcon(RuntimeOs? os = null) + { + var _os = os ?? VelopackRuntimeInfo.SystemOs; + switch (_os) { + case RuntimeOs.Windows: + return null; + case RuntimeOs.Linux: + return FindHelperFile("DefaultApp_64.png"); + case RuntimeOs.OSX: + return FindHelperFile("DefaultApp.icns"); + default: + throw new PlatformNotSupportedException("Default Icon is not available for this platform."); + } + } + private static List _searchPaths = new List(); static HelperFile() @@ -61,6 +76,7 @@ public static class HelperFile #if DEBUG AddSearchPath(AppContext.BaseDirectory, "..", "..", "..", "src", "Rust", "target", "debug"); AddSearchPath(AppContext.BaseDirectory, "..", "..", "..", "vendor"); + AddSearchPath(AppContext.BaseDirectory, "..", "..", "..", "artwork"); #else AddSearchPath(AppContext.BaseDirectory, "..", "..", "..", "vendor"); #endif diff --git a/src/Velopack.Vpk/Commands/LinuxPackCommand.cs b/src/Velopack.Vpk/Commands/LinuxPackCommand.cs index 2ae5e2cf..a96621a9 100644 --- a/src/Velopack.Vpk/Commands/LinuxPackCommand.cs +++ b/src/Velopack.Vpk/Commands/LinuxPackCommand.cs @@ -92,9 +92,8 @@ public class LinuxPackCommand : PlatformCommand .SetArgumentHelpName("DIR") .MustNotBeEmpty(); - this.AreMutuallyExclusive(packDir, appDir); this.AtLeastOneRequired(packDir, appDir); + this.AreMutuallyExclusive(packDir, appDir); this.AreMutuallyExclusive(icon, appDir); - this.AtLeastOneRequired(icon, appDir); } } diff --git a/src/Velopack.Vpk/Commands/OsxBundleCommand.cs b/src/Velopack.Vpk/Commands/OsxBundleCommand.cs index e8b161b5..bac161d2 100644 --- a/src/Velopack.Vpk/Commands/OsxBundleCommand.cs +++ b/src/Velopack.Vpk/Commands/OsxBundleCommand.cs @@ -62,7 +62,6 @@ public class OsxBundleCommand : PlatformCommand .SetDescription("Path to the .icns file for this bundle.") .SetArgumentHelpName("PATH") .MustExist() - .SetRequired() .RequiresExtension(".icns"); var bundleId = AddOption((v) => BundleId = v, "--bundleId") diff --git a/src/Velopack.Vpk/Velopack.Vpk.csproj b/src/Velopack.Vpk/Velopack.Vpk.csproj index 7c28a731..f5906bb1 100644 --- a/src/Velopack.Vpk/Velopack.Vpk.csproj +++ b/src/Velopack.Vpk/Velopack.Vpk.csproj @@ -34,6 +34,8 @@ + + diff --git a/test/Velopack.Packaging.Tests/TestApp.cs b/test/Velopack.Packaging.Tests/TestApp.cs index f6795b07..a019b8f6 100644 --- a/test/Velopack.Packaging.Tests/TestApp.cs +++ b/test/Velopack.Packaging.Tests/TestApp.cs @@ -51,7 +51,6 @@ public static class TestApp EntryExecutableName = "TestApp", ReleaseDir = new DirectoryInfo(releaseDir), PackId = id, - Icon = Path.Combine(PathHelper.GetProjectDir(), "samples", "AvaloniaCrossPlat", "Velopack.icns"), TargetRuntime = RID.Parse(VelopackRuntimeInfo.SystemOs.GetOsShortName()), PackVersion = version, PackDirectory = Path.Combine(projDir, "publish"), @@ -65,7 +64,6 @@ public static class TestApp EntryExecutableName = "TestApp", ReleaseDir = new DirectoryInfo(releaseDir), PackId = id, - Icon = Path.Combine(PathHelper.GetProjectDir(), "samples", "AvaloniaCrossPlat", "Velopack.png"), TargetRuntime = RID.Parse(VelopackRuntimeInfo.SystemOs.GetOsShortName()), PackVersion = version, PackDirectory = Path.Combine(projDir, "publish"),