From fb233b4ff7dd5dc958d9906d98597b929432f0d1 Mon Sep 17 00:00:00 2001 From: Ad5001 Date: Wed, 2 Jun 2021 19:14:42 +0200 Subject: [PATCH] Windows installer --- .gitignore | 1 + README.md | 35 ++++ linux/install_local.sh | 2 +- .../logplotterfile.svg => logplotterfile.svg | 0 win/build-windows.bat | 5 + win/build-wine.sh | 9 + win/inst_banner.bmp | Bin 0 -> 206122 bytes win/installer.nsi | 187 ++++++++++++++++++ win/package-windows.bat | 5 + win/package-wine.sh | 6 + 10 files changed, 249 insertions(+), 1 deletion(-) create mode 100644 README.md rename linux/logplotterfile.svg => logplotterfile.svg (100%) create mode 100644 win/build-windows.bat create mode 100644 win/build-wine.sh create mode 100644 win/inst_banner.bmp create mode 100644 win/installer.nsi create mode 100644 win/package-windows.bat create mode 100644 win/package-wine.sh diff --git a/.gitignore b/.gitignore index 099b0a6..9baea95 100644 --- a/.gitignore +++ b/.gitignore @@ -18,6 +18,7 @@ docs/html *.json *.lpf *.lgg +*.spec .kdev4 AccountFree.pro AccountFree.pro.user diff --git a/README.md b/README.md new file mode 100644 index 0000000..ed97515 --- /dev/null +++ b/README.md @@ -0,0 +1,35 @@ +# Logarithm Plotter + +Create graphs with logarithm scales, namely BODE diagrams. + +## Install + +### Windows +You can generate installers from AccountFree after installing all the dependencies: +- Windows installer: + - You need `pyinstaller`. You can install it using `pip install pyinstaller`. + - Run the `win/build-windows.bat` script (or `win/build-wine.sh` if you're cross-compiling with wine on Linux) to build an exe for AccountFree. + - You also [NSIS](https://nsis.sourceforge.io/Main_Page) (Linux users can install the `nsis` package). + - Run the `win/package-windows.bat` script (or `win/package.wine.sh`if you're cross-compiling on Linux). You will find a accountfre-esetup.exe installer in the dist/logarithmplotter/ folder. + + +### Linux + +Run `bash linux/install_local.sh` + +## Legal notice + Logarithmic Plotter - Create graphs with logarithm scales. + Copyright (C) 2021 Ad5001 + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . diff --git a/linux/install_local.sh b/linux/install_local.sh index a6855df..7271387 100644 --- a/linux/install_local.sh +++ b/linux/install_local.sh @@ -7,6 +7,6 @@ echo "Installing mime-type..." mkdir -p ~/.local/share/applications sed "s+/home/ad5001/Apps/LogarithmPlotter/+$APPROOT/+g" "$APPROOT/linux/x-logarithm-plotter.xml" > ~/.local/share/mime/packages/x-logarithm-plotter.xml mkdir -p ~/.local/share/icons/hicolor/scalable/mimetypes -cp "$APPROOT/linux/logplotterfile.svg" ~/.local/share/icons/hicolor/scalable/mimetypes/application-x-logarithm-plotter.svg +cp "$APPROOT/logplotterfile.svg" ~/.local/share/icons/hicolor/scalable/mimetypes/application-x-logarithm-plotter.svg update-mime-database ~/.local/share/mime/ update-icon-caches ~/.local/share/icons/hicolor diff --git a/linux/logplotterfile.svg b/logplotterfile.svg similarity index 100% rename from linux/logplotterfile.svg rename to logplotterfile.svg diff --git a/win/build-windows.bat b/win/build-windows.bat new file mode 100644 index 0000000..0582764 --- /dev/null +++ b/win/build-windows.bat @@ -0,0 +1,5 @@ +cd .. +cp run.py logarithmplotter.py +python -m pip install -U pyinstaller +pyinstaller --add-data "qml;qml" --noconsole logarithmplotter.py --icon=win/logplotter.ico +rm logarithmplotter.py diff --git a/win/build-wine.sh b/win/build-wine.sh new file mode 100644 index 0000000..4710793 --- /dev/null +++ b/win/build-wine.sh @@ -0,0 +1,9 @@ +#!/bin/bash +# Giving pyinstaller another run +cd .. +rm $(find . -name "*.qmlc") +rm $(find . -name "*.pyc") +cp run.py logarithmplotter.py +wine python -m pip install -U pyinstaller +wine pyinstaller --add-data "qml;qml" --noconsole logarithmplotter.py --icon=win/logplotter.ico +rm logarithmplotter.py diff --git a/win/inst_banner.bmp b/win/inst_banner.bmp new file mode 100644 index 0000000000000000000000000000000000000000..c907e55866fea48b576c1b6903413b113c2aa15b GIT binary patch literal 206122 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 CmqIK6 literal 0 HcmV?d00001 diff --git a/win/installer.nsi b/win/installer.nsi new file mode 100644 index 0000000..8873715 --- /dev/null +++ b/win/installer.nsi @@ -0,0 +1,187 @@ +; Modern UI definitions +;-------------------------------- +;Include Modern UI + +!include "MUI2.nsh" + +;-------------------------------- +;Definitions +!define APP_NAME "LogarithmPlotter" +!define DEV_NAME "Ad5001" +!define WEBSITE "https://logarithmplotter.org" +!define APP_VERSION "0.0.1.0" +!define COPYRIGHT "Ad5001 © 2021" +!define DESCRIPTION "Browse and use online services, free of account." + +!define REG_UNINSTALL "Software\Microsoft\Windows\CurrentVersion\Uninstall\LogarithmPlotter" + +;-------------------------------- +;General description +Name "${APP_NAME}" +Caption "${APP_NAME}" +BrandingText "${APP_NAME}" +OutFile "logarithmplotter-setup.exe" +RequestExecutionLevel admin + +;Default installation folder +InstallDir "$PROGRAMFILES\LogarithmPlotter" + +;-------------------------------- +;Additional parameters +SetCompressor ZLIB +VIProductVersion "${APP_VERSION}" +VIAddVersionKey "ProductName" "${APP_NAME}" +VIAddVersionKey "CompanyName" "${DEV_NAME}" +VIAddVersionKey "LegalCopyright" "${COPYRIGHT}" +VIAddVersionKey "FileDescription" "${DESCRIPTION}" +VIAddVersionKey "FileVersion" "${VERSION}" + + +;-------------------------------- +;defines MUST come before pages to apply to them + +!define MUI_PAGE_HEADER_TEXT "${APP_NAME} v${APP_VERSION}" +!define MUI_PAGE_HEADER_SUBTEXT "${COPYRIGHT}" + +!define MUI_WELCOMEPAGE_TITLE "Install ${APP_NAME} v${APP_VERSION}" +!define MUI_WELCOMEPAGE_TEXT "Welcome to the ${APP_NAME} installer! Follow the steps provided by this installer to install ${APP_NAME}" +!define MUI_HEADERIMAGE_RIGHT +;Extra space for the title area +;!insertmacro MUI_WELCOMEPAGE_TITLE_3LINES + +;Icons +Icon "logplotter.ico" +;!define MUI_HEADERIMAGE +;!define MUI_HEADERIMAGE_BITMAP "logarithmplotter.bmp" +!define MUI_WELCOMEFINISHPAGE_BITMAP "inst_banner.bmp" +!define MUI_UNWELCOMEFINISHPAGE_BITMAP "inst_banner.bmp" + + +!define MUI_LICENSEPAGE_TEXT_TOP "This software is governed by the following terms:" +!define MUI_LICENSEPAGE_TEXT_BOTTOM "Have you read and agreed the terms of the license?" +!define MUI_LICENSEPAGE_BUTTON "Next" + +;Display a checkbox the user has to check to agree with the license terms. +;!define MUI_LICENSEPAGE_CHECKBOX +;!define MUI_LICENSEPAGE_CHECKBOX_TEXT "I agree" + +;*OR* +;Display two radio buttons to allow the user to choose between accepting the license terms or not. +!define MUI_LICENSEPAGE_RADIOBUTTONS +!define MUI_LICENSEPAGE_RADIOBUTTONS_TEXT_ACCEPT "I agree" +!define MUI_LICENSEPAGE_RADIOBUTTONS_TEXT_DECLINE "I disagree" + +;!define MUI_COMPONENTSPAGE_TEXT_TOP "Select some Monkeys" +;!define MUI_COMPONENTSPAGE_TEXT_COMPLIST "Choose your Monkeys:" +;!define MUI_COMPONENTSPAGE_TEXT_INSTTYPE "Monkey List:" +;!define MUI_COMPONENTSPAGE_TEXT_DESCRIPTION_TITLE "MUI_COMPONENTSPAGE_TEXT_DESCRIPTION_TITLE" +;!define MUI_COMPONENTSPAGE_TEXT_DESCRIPTION_INFO "MUI_COMPONENTSPAGE_TEXT_DESCRIPTION_INFO" + +;!define MUI_DIRECTORYPAGE_TEXT_TOP "MUI_DIRECTORYPAGE_TEXT_TOP" +;!define MUI_DIRECTORYPAGE_TEXT_DESTINATION "MUI_DIRECTORYPAGE_TEXT_DESTINATION" +;!define MUI_DIRECTORYPAGE_VARIABLE $INSTDIR + +!define MUI_INSTFILESPAGE_FINISHHEADER_TEXT "Success!" +!define MUI_INSTFILESPAGE_FINISHHEADER_SUBTEXT "${APP_NAME} v${APP_VERSION} was installed on your computer" +!define MUI_INSTFILESPAGE_ABORTHEADER_TEXT "There was an error during the installation process." +!define MUI_INSTFILESPAGE_ABORTHEADER_SUBTEXT "${APP_NAME} v${APP_VERSION} was not installed on your computer." + +!define MUI_FINISHPAGE_TITLE "Finished!" +;!define MUI_FINISHPAGE_TITLE_3LINES +!define MUI_FINISHPAGE_TEXT "Press 'Finish' to close this installer program." +;Extra space for the text area (if using checkboxes). +;!define MUI_FINISHPAGE_TEXT_LARGE +!define MUI_FINISHPAGE_BUTTON "Finish" +;!define MUI_FINISHPAGE_CANCEL_ENABLED +;!define MUI_FINISHPAGE_TEXT_REBOOT "MUI_FINISHPAGE_TEXT_REBOOT" +;!define MUI_FINISHPAGE_TEXT_REBOOTNOW "MUI_FINISHPAGE_TEXT_REBOOTNOW" +;!define MUI_FINISHPAGE_TEXT_REBOOTLATER "MUI_FINISHPAGE_TEXT_REBOOTLATER" +;!define MUI_FINISHPAGE_TEXT_REBOOTLATER_DEFAULT + +!define MUI_FINISHPAGE_RUN "logarithmplotter.exe" +!define MUI_FINISHPAGE_RUN_TEXT "Run ${APP_NAME}" +;Parameters for the application to run. Don't forget to escape double quotes in the value (use $\"). +;!define MUI_FINISHPAGE_RUN_PARAMETERS +;!define MUI_FINISHPAGE_RUN_NOTCHECKED +;!define MUI_FINISHPAGE_RUN_FUNCTION + +!define MUI_FINISHPAGE_SHOWREADME "README.md" +;Don't make this label too long or it'll cut on top and bottom. +!define MUI_FINISHPAGE_SHOWREADME_TEXT "Open README" +!define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED +;MUI_FINISHPAGE_SHOWREADME_FUNCTION Function + +!define MUI_FINISHPAGE_LINK "${APP_NAME}'s website" +!define MUI_FINISHPAGE_LINK_LOCATION "${WEBSITE}" +;!define MUI_FINISHPAGE_LINK_COLOR RRGGBB + +!define MUI_FINISHPAGE_NOREBOOTSUPPORT + +;!define MUI_UNCONFIRMPAGE_TEXT_TOP "MUI_UNCONFIRMPAGE_TEXT_TOP" +;!define MUI_UNCONFIRMPAGE_TEXT_LOCATION "MUI_UNCONFIRMPAGE_TEXT_LOCATION" + +;hide descriptions on hover +;!define MUI_COMPONENTSPAGE_NODESC + +;-------------------------------- +;Pages + +!insertmacro MUI_PAGE_WELCOME +!insertmacro MUI_PAGE_LICENSE "LICENSE.md" +;!insertmacro MUI_PAGE_COMPONENTS +!insertmacro MUI_PAGE_DIRECTORY +!insertmacro MUI_PAGE_INSTFILES +!insertmacro MUI_PAGE_FINISH + +!insertmacro MUI_UNPAGE_WELCOME +!insertmacro MUI_UNPAGE_CONFIRM +;!insertmacro MUI_UNPAGE_INSTFILES +!insertmacro MUI_UNPAGE_FINISH + +;-------------------------------- +;Languages + +!insertmacro MUI_LANGUAGE "English" + +;-------------------------------- +;Included files +Section "" + SetOutPath $INSTDIR + File logarithmplotter.exe + File *.dll + File *.pyd + File *.md + File *.manifest + File *.zip + File *.bmp + File *.ico + File /r qml + File /r PySide2 + File /r shiboken2 + + + CreateShortcut "$SMPROGRAMS\LogarithmPlotter.lnk" "$INSTDIR\logarithmplotter.exe" + + WriteUninstaller $INSTDIR\uninstall.exe + WriteRegStr HKLM ${REG_UNINSTALL} "DisplayName" "LogarithmPlotter" + WriteRegStr HKLM ${REG_UNINSTALL} "UninstallString" "$INSTDIR\uninstall.exe" + WriteRegStr HKLM ${REG_UNINSTALL} "QuietUninstallString" "$INSTDIR\uninstall.exe /S" + WriteRegStr HKLM ${REG_UNINSTALL} "DisplayIcon" "$INSTDIR\logarithmplotter.bmp" + WriteRegStr HKLM ${REG_UNINSTALL} "DisplayVersion" "${VERSION}" + WriteRegStr HKLM ${REG_UNINSTALL} "Readme" "$INSTDIR\README.md" + WriteRegStr HKLM ${REG_UNINSTALL} "URLInfoAbout" "${WEBSITE}" + + SectionEnd + + ;-------------------------------- + ;Uninstaller Section + ; + Section "Uninstall" + + RMDir /r "$INSTDIR" + + Delete "$SMPROGRAMS\LogarithmPlotter.lnk" + DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\LogarithmPlotter" +; ;DeleteRegKey /ifempty HKCU "Software\Modern UI Test" +; +SectionEnd diff --git a/win/package-windows.bat b/win/package-windows.bat new file mode 100644 index 0000000..cc7d33b --- /dev/null +++ b/win/package-windows.bat @@ -0,0 +1,5 @@ +cd .. +cp * ../README.md ../LICENSE.md ../dist/logarithmplotter/ +# Creating installer +cd ../dist/logarithmplotter/ +"C:\Program Files (x86)\NSIS\makensis" installer.nsi diff --git a/win/package-wine.sh b/win/package-wine.sh new file mode 100644 index 0000000..4c73b72 --- /dev/null +++ b/win/package-wine.sh @@ -0,0 +1,6 @@ +#!/bin/bash +# Moving files +cp * ../README.md ../LICENSE.md ../dist/logarithmplotter/ +# Creating installer +cd ../dist/logarithmplotter/ +makensis installer.nsi