From 9aa4f6d75d7df4a53446304a77b30b1f5fb57ff4 Mon Sep 17 00:00:00 2001 From: Dan Ballard Date: Fri, 27 Nov 2020 13:53:34 -0800 Subject: [PATCH] nsi to install cwtch, plus scripts and assets to generate it --- nsis/brand_side.bmp | Bin 0 -> 52574 bytes nsis/cwtch-installer-pre.nsi | 78 +++++++++++++++++++++++++++++++++++ nsis/cwtch-installer-suf.nsi | 11 +++++ nsis/cwtch_title.bmp | Bin 0 -> 9742 bytes nsis/gen-installer-nsi.sh | 6 +++ nsis/knot.ico | Bin 0 -> 67646 bytes 6 files changed, 95 insertions(+) create mode 100644 nsis/brand_side.bmp create mode 100644 nsis/cwtch-installer-pre.nsi create mode 100644 nsis/cwtch-installer-suf.nsi create mode 100644 nsis/cwtch_title.bmp create mode 100644 nsis/gen-installer-nsi.sh create mode 100644 nsis/knot.ico diff --git a/nsis/brand_side.bmp b/nsis/brand_side.bmp new file mode 100644 index 0000000000000000000000000000000000000000..3d03803d6a41d90139914246d3e6bcf0ff706c9b GIT binary patch literal 52574 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 L3`7Qg8Uz0ec2!&j literal 0 HcmV?d00001 diff --git a/nsis/cwtch-installer-pre.nsi b/nsis/cwtch-installer-pre.nsi new file mode 100644 index 00000000..6bee3583 --- /dev/null +++ b/nsis/cwtch-installer-pre.nsi @@ -0,0 +1,78 @@ +!include "MUI2.nsh" + +; General settings ---------------------------- +Name "Cwtch" +; !define MUI_BRANDINGTEXT "SIG Beta Ver. 1.0" + +Unicode True + +# define the name of the installer +Outfile "cwtch-installer.exe" + +# For removing Start Menu shortcut in Windows 7 +#RequestExecutionLevel user +RequestExecutionLevel admin ;Require admin rights on NT6+ (When UAC is turned on) + +# define the directory to install to, the desktop in this case as specified +# by the predefined $DESKTOP variable +InstallDir "$PROGRAMFILES\Cwtch" + +;Get installation folder from registry if available +InstallDirRegKey HKCU "Software\Cwtch" "" + +; MUI Interface ----------------------------- + +!define MUI_INSTALLCOLORS "DFB9DE 281831" + +!define MUI_ICON "..\..\nsis\knot.ico" + + +!define MUI_HEADERIMAGE +!define MUI_HEADERIMAGE_BITMAP "..\..\nsis\cwtch_title.bmp" + +!define MUI_TEXTCOLOR "350052" + +!define MUI_WELCOMEFINISHPAGE_BITMAP "..\..\nsis\brand_side.bmp" +!define MUI_WELCOMEFINISHPAGE_BITMAP_STRETCH NoStretchNoCrop + +!define MUI_INSTFILESPAGE_COLORS "DFB9DE 281831" +!define MUI_INSTFILESPAGE_PROGRESSBAR "colored" + +!define MUI_FINISHPAGE_NOAUTOCLOSE + + +ShowInstDetails show + +; Pages -------- + + +!define MUI_WELCOMEPAGE_TITLE "Welcome to the Cwtch installer" +!define MUI_WELCOMEPAGE_TEXT "Cwtch (pronounced: kutch) is a Welsh word roughly meaning 'a hug that creates a safe space'$\n$\n\ + Cwtch is a platform for building consentful, decentralized, untrusted infrastructure using metadata resistant group communication applications. Currently there is a selfnamed instant messaging prototype app that is driving development and testing. Many Further apps are planned as the platform matures." + +!define MUI_FINISHPAGE_TITLE "Enjoy Cwtch" +!define MUI_FINISHPAGE_RUN $INSTDIR/ui.exe +!define MUI_FINISHPAGE_TEXT "You can keep uptodate on Cwtch and report any issues you have at https://cwtch.im" +!define MUI_FINISHPAGE_LINK "https://cwtch.im" +!define MUI_FINISHPAGE_LINK_LOCATION "https://cwtch.im" +!define MUI_FINISHPAGE_LINK_COLOR "D01972" + +!insertmacro MUI_PAGE_WELCOME +!insertmacro MUI_PAGE_LICENSE "../../LICENSE" +!insertmacro MUI_PAGE_DIRECTORY +!insertmacro MUI_PAGE_INSTFILES +!insertmacro MUI_PAGE_FINISH + +; Languages -------------------------------- + +!insertmacro MUI_LANGUAGE "English" + +# default section +Section + + # define the output path for this file + SetOutPath $INSTDIR + + # define what to install and place it in the output path + # Filler for .sh to populate with contents of deploy/windows + #FILESLISTSTART diff --git a/nsis/cwtch-installer-suf.nsi b/nsis/cwtch-installer-suf.nsi new file mode 100644 index 00000000..3370064a --- /dev/null +++ b/nsis/cwtch-installer-suf.nsi @@ -0,0 +1,11 @@ +#FILESLISTEND + + + # create a shortcut named "new shortcut" in the start menu programs directory + # presently, the new shortcut doesn't call anything (the second field is blank) + CreateShortcut "$SMPROGRAMS\Cwtch.lnk" "$INSTDIR\ui.exe" + + ;Store installation folder + WriteRegStr HKCU "Software\Cwtch" "" $INSTDIR + +SectionEnd \ No newline at end of file diff --git a/nsis/cwtch_title.bmp b/nsis/cwtch_title.bmp new file mode 100644 index 0000000000000000000000000000000000000000..8acc80af148011d3f4d1b9d0e041aae3f509c603 GIT binary patch literal 9742 zcmeH~F|I2o6o!cu$*JBNNE2lRkq557v}f+ET~C{kqwDRLzmmv{8~6qAp0 zU&N;^8pML)IossK@uZ{Vh+Ar`Ud}Y3o`+t6G%%apYHbR1Ij5A#!~L)AnJ4m<>ikRT({fCUF00z^oVjp1#w1qU7iL`aa0GsrX+%F9E52nn)o z&00za9s)#2kagS6QabPuAVPwyF7cMqfrkJQ5@dB(u#^rw1c;Czt1F|Wbl@RCgaldL zoGhgS4*?=1$PxmVEu{kw0U{*GCb0itER>ylD6a?!vI*9J1qU7iL`aY|Y|c_T@DLzE zf~+C+mePTT01*;o4L6H~;J`zG2nn*LLbQ|)JOqf4AZwZ=OX9C!#2p}exDmbH`)JOqf4AZyw=OXikRWTi221I{ zLx2bgvZivhlny)uh>##_nkP%?z(as&KL5R%Ul|v$XUr;Zv#zBEyvnW8{*aew`+&-x zx*iM4(_c@2J?4SOMnCiG>95B;@Yv{Qem(v5m>eCj+n`dJ>l#8)Hh!f#RR-ZFn|$$<7T^VcHdkLNZY>v!tXiF=^d^*rcO%PsSD`@?`H zYZ^zj-c*&Li)|ws_6J0m0zo$zVy3o=$+t*1$SC*EmAJXdAy2Sc4=>}>wCJSf0`|-OZvr2W!qz``KguHx@3Io9?Gkp5``|muKI`B`txu+ zv{4#D3GHMrb6xYpu36lcyU-)9WVPDX7+xm1;r%Qf3Za(SBhD73KM_MhsW7n{K z{o#^ZGly;V`boVm86Y>*Mg8YnnWPIyPHim>YaP0r>m^IHhKdpEvv9ntOH*hNc4#eG zsP48Js#@ANpx?#pcU!Fw!WLb)o-2Z zl6AIkot&oozU7;$M@5aW1bzRgX<3gNS+!cfSJ%1=t7dii%UI#C&3U?9H*ObHYfV=t ztoGckOONx;vaTmLI#-{&GhUNPb$;1j7^r?~3y5Nw)ESp-l6AK@mfrpkZVf?tfbtMp#$LYe;Ke%=2ely7jGC8em??v!p#=2E-5 w_K=qu?^`bhWX|BPZMFZt^3?TM44(da`s* fileslist #eol +cat cwtch-installer-pre.nsi > cwtch-installer-final.nsi #eol +cat fileslist >> cwtch-installer-final.nsi #eol +cat cwtch-installer-suf.nsi >> cwtch-installer-final.nsi #eol +#eof diff --git a/nsis/knot.ico b/nsis/knot.ico new file mode 100644 index 0000000000000000000000000000000000000000..7e2acda6c8744da8d2b3757e5036779a0c96c916 GIT binary patch literal 67646 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