diff --git a/.github/workflows/autobuild.yml b/.github/workflows/autobuild.yml index 57473186e2..9d0e600596 100644 --- a/.github/workflows/autobuild.yml +++ b/.github/workflows/autobuild.yml @@ -140,6 +140,14 @@ jobs: cmd3_postbuild: powershell .\autobuild\windows\autobuild_windowsinstaller_3_copy_files.ps1 uses_codeql: true + - config_name: Windows JACK (artifact) + target_os: windows + building_on_os: windows-latest + cmd1_prebuild: powershell .\autobuild\windows\autobuild_windowsinstaller_1_prepare.ps1 -BuildOption jackonwindows + cmd2_build: powershell .\autobuild\windows\autobuild_windowsinstaller_2_build.ps1 -BuildOption jackonwindows + cmd3_postbuild: powershell .\autobuild\windows\autobuild_windowsinstaller_3_copy_files.ps1 -BuildOption jackonwindows + uses_codeql: false + runs-on: ${{ matrix.config.building_on_os }} steps: diff --git a/README.md b/README.md index 722e5b1236..8865bab194 100644 --- a/README.md +++ b/README.md @@ -9,8 +9,8 @@ Jamulus - Internet Jam Session Software Jamulus enables musicians to perform in real-time together over the internet. A Jamulus server collects the incoming audio data from each Jamulus client, mixes that data and then sends that mix back to each client. Jamulus can support large numbers of clients with minimal latency and modest bandwidth requirements. -Jamulus is [__free and open source software__](https://www.gnu.org/philosophy/free-sw.en.html) (FOSS) licensed under the [GPL](http://www.gnu.org/licenses/gpl-2.0.html) -and runs under __Windows__ ([ASIO](https://www.steinberg.net)), +Jamulus is [__free and open source software__](https://www.gnu.org/philosophy/free-sw.en.html) (FOSS) licensed under the [GPL](http://www.gnu.org/licenses/gpl-2.0.html) +and runs under __Windows__ ([ASIO](https://www.steinberg.net) or [JACK](https://jackaudio.org)), __MacOS__ ([Core Audio](https://developer.apple.com/documentation/coreaudio)) and __Linux__ ([JACK](https://jackaudio.org)). It is based on the [Qt framework](https://www.qt.io) and uses the [OPUS](http://www.opus-codec.org) audio codec. diff --git a/autobuild/windows/autobuild_windowsinstaller_1_prepare.ps1 b/autobuild/windows/autobuild_windowsinstaller_1_prepare.ps1 index ab1d643241..d4f837b52b 100644 --- a/autobuild/windows/autobuild_windowsinstaller_1_prepare.ps1 +++ b/autobuild/windows/autobuild_windowsinstaller_1_prepare.ps1 @@ -3,6 +3,16 @@ # autobuild_1_prepare: set up environment, install Qt & dependencies +#################### +### PARAMETERS ### +#################### + +param( + # Allow buildoption to be passed for jackonwindows build, leave empty for standard (ASIO) build + [string] $BuildOption = "" +) + + ################### ### PROCEDURE ### ################### @@ -17,3 +27,20 @@ aqt install --outputdir C:\Qt 5.15.2 windows desktop win64_msvc2019_64 echo "Get Qt 32 bit..." # intermediate solution if the main server is down: append e.g. " -b https://mirrors.ocf.berkeley.edu/qt/" to the "aqt"-line below aqt install --outputdir C:\Qt 5.15.2 windows desktop win32_msvc2019 + + +################################# +### ONLY ADD JACK IF NEEDED ### +################################# + +if ($BuildOption -Eq "jackonwindows") +{ + echo "Install JACK2 64-bit..." + # Install JACK2 64-bit + choco install --no-progress -y jack + + echo "Install JACK2 32-bit..." + # Install JACK2 32-bit (need to force choco install as it detects 64 bits as installed) + choco install --no-progress -y -f --forcex86 jack +} + diff --git a/autobuild/windows/autobuild_windowsinstaller_2_build.ps1 b/autobuild/windows/autobuild_windowsinstaller_2_build.ps1 index b78cfcd610..84493d7823 100644 --- a/autobuild/windows/autobuild_windowsinstaller_2_build.ps1 +++ b/autobuild/windows/autobuild_windowsinstaller_2_build.ps1 @@ -7,9 +7,10 @@ ### PARAMETERS ### #################### -# Get the source path via parameter +# Get the source path via parameter and BuildOption to empty when not provided param ( - [string] $jamulus_project_path = $Env:jamulus_project_path + [string] $jamulus_project_path = $Env:jamulus_project_path, + [string] $BuildOption = "" ) # Sanity check of parameters if (("$jamulus_project_path" -eq $null) -or ("$jamulus_project_path" -eq "")) { @@ -27,4 +28,11 @@ if (("$jamulus_project_path" -eq $null) -or ("$jamulus_project_path" -eq "")) { echo "Build installer..." # Build the installer -powershell "$jamulus_project_path\windows\deploy_windows.ps1" "C:\Qt\5.15.2" +if ($BuildOption -ne "") +{ + powershell "$jamulus_project_path\windows\deploy_windows.ps1" "C:\Qt\5.15.2" -BuildOption $BuildOption +} +else +{ + powershell "$jamulus_project_path\windows\deploy_windows.ps1" "C:\Qt\5.15.2" +} diff --git a/autobuild/windows/autobuild_windowsinstaller_3_copy_files.ps1 b/autobuild/windows/autobuild_windowsinstaller_3_copy_files.ps1 index 96ded41736..67b2f15813 100644 --- a/autobuild/windows/autobuild_windowsinstaller_3_copy_files.ps1 +++ b/autobuild/windows/autobuild_windowsinstaller_3_copy_files.ps1 @@ -7,10 +7,11 @@ ### PARAMETERS ### #################### -# Get the source path via parameter +# Get the source path via parameter and set BuildOption to empty when not provided param ( [string] $jamulus_project_path = $Env:jamulus_project_path, - [string] $jamulus_buildversionstring = $Env:jamulus_buildversionstring + [string] $jamulus_buildversionstring = $Env:jamulus_buildversionstring, + [string] $BuildOption = "" ) # Sanity check of parameters if (("$jamulus_project_path" -eq $null) -or ("$jamulus_project_path" -eq "")) { @@ -26,6 +27,12 @@ if (($jamulus_buildversionstring -eq $null) -or ($jamulus_buildversionstring -eq $jamulus_buildversionstring = "NoVersion" } +# Amend BuildOption when needed, only needed when the name build option in the artifact needs to be different +switch ($BuildOption) +{ + "jackonwindows" {$BuildOption = "jack"; break} +} + ################### ### PROCEDURE ### @@ -33,13 +40,19 @@ if (($jamulus_buildversionstring -eq $null) -or ($jamulus_buildversionstring -eq # Rename the file echo "rename" -$artifact_deploy_filename = "jamulus_${Env:jamulus_buildversionstring}_win.exe" +if ($BuildOption -ne "") +{ + $artifact_deploy_filename = "jamulus_${Env:jamulus_buildversionstring}_win_${BuildOption}.exe" +} +else +{ + $artifact_deploy_filename = "jamulus_${Env:jamulus_buildversionstring}_win.exe" +} + echo "rename deploy file to $artifact_deploy_filename" cp "$jamulus_project_path\deploy\Jamulus*installer-win.exe" "$jamulus_project_path\deploy\$artifact_deploy_filename" - - Function github_output_value { param ( diff --git a/src/res/translation/wininstaller/de.nsi b/src/res/translation/wininstaller/de.nsi index b1f7d87d63..b872ddbc75 100644 --- a/src/res/translation/wininstaller/de.nsi +++ b/src/res/translation/wininstaller/de.nsi @@ -22,10 +22,10 @@ LangString ASIO_DRIVER_HEADER ${LANG_GERMAN} \ "ASIO Treiber" LangString ASIO_DRIVER_SUB ${LANG_GERMAN} \ - "Jamulus benötigt einen ASIO Treiber" + "${APP_NAME} benötigt einen ASIO Treiber" LangString ASIO_DRIVER_EXPLAIN ${LANG_GERMAN} \ - "Jamulus braucht einen ASIO Treiber um geringe Audio Latenz zu ermöglichen. Mehr Info:" + "${APP_NAME} braucht einen ASIO Treiber um geringe Audio Latenz zu ermöglichen. Mehr Info:" LangString ASIO_DRIVER_MORE_INFO ${LANG_GERMAN} \ "Mehr info über ASIO auf jamulus.io" @@ -35,3 +35,15 @@ LangString ASIO_DRIVER_MORE_INFO_URL ${LANG_GERMAN} \ LangString ASIO_EXIT_NO_DRIVER ${LANG_GERMAN} \ "Um eine geringe Audio Verzögerung zu ermöglichen, braucht ${APP_NAME} einen ASIO Treiber. Da wir keinen auf deinem PC finden konnten, musst du einen, wie z.B. ASIO4ALL installieren (Infos dazu auf jamulus.io unter Installation auf Windows). Willst du trotzdem erst einmal mit der Installation von ${APP_NAME} fortfahren?" + +LangString JACK_DRIVER_HEADER ${LANG_GERMAN} \ + "JACK Audio Connection Kit" + +LangString JACK_DRIVER_SUB ${LANG_GERMAN} \ + "To use this version of ${APP_NAME}, you need use the JACK Audio Connection Kit" + +LangString JACK_DRIVER_EXPLAIN ${LANG_GERMAN} \ + "This version of ${APP_NAME} is making use of the JACK Audio Connection Kit. Please make sure this has been installed or download the standard version of ${APP_NAME} on jamulus.io which is using ASIO." + +LangString JACK_EXIT_NO_DRIVER ${LANG_GERMAN} \ + "This ${APP_NAME} version needs the JACK Audio Connection Kit to work, but it doesn't seem to be installed on your PC. You should install JACK for Windows first. Do you still want to continue with the installation of ${APP_NAME} without installing JACK first?" diff --git a/src/res/translation/wininstaller/en.nsi b/src/res/translation/wininstaller/en.nsi index 483372ce2f..9ba97bc417 100644 --- a/src/res/translation/wininstaller/en.nsi +++ b/src/res/translation/wininstaller/en.nsi @@ -22,10 +22,10 @@ LangString ASIO_DRIVER_HEADER ${LANG_ENGLISH} \ "ASIO driver" LangString ASIO_DRIVER_SUB ${LANG_ENGLISH} \ - "To use Jamulus, you need an ASIO driver" + "To use ${APP_NAME}, you need an ASIO driver" LangString ASIO_DRIVER_EXPLAIN ${LANG_ENGLISH} \ - "Jamulus needs an ASIO driver to provide low latency audio. More information:" + "${APP_NAME} needs an ASIO driver to provide low latency audio. More information:" LangString ASIO_DRIVER_MORE_INFO ${LANG_ENGLISH} \ "More information about ASIO on jamulus.io" @@ -35,3 +35,15 @@ LangString ASIO_DRIVER_MORE_INFO_URL ${LANG_ENGLISH} \ LangString ASIO_EXIT_NO_DRIVER ${LANG_ENGLISH} \ "${APP_NAME} needs an ASIO audio driver to work, but we couldn't find one on your PC. You should install one like ASIO4ALL (More information on jamulus.io under Installation for Windows). Do you still want to continue with the installation of ${APP_NAME} first?" + +LangString JACK_DRIVER_HEADER ${LANG_ENGLISH} \ + "JACK Audio Connection Kit" + +LangString JACK_DRIVER_SUB ${LANG_ENGLISH} \ + "To use this version of ${APP_NAME}, you need use the JACK Audio Connection Kit" + +LangString JACK_DRIVER_EXPLAIN ${LANG_ENGLISH} \ + "This version of ${APP_NAME} is making use of the JACK Audio Connection Kit. Please make sure this has been installed or download the standard version of ${APP_NAME} on jamulus.io which is using ASIO." + +LangString JACK_EXIT_NO_DRIVER ${LANG_ENGLISH} \ + "This ${APP_NAME} version needs the JACK Audio Connection Kit to work, but it doesn't seem to be installed on your PC. You should install JACK for Windows first. Do you still want to continue with the installation of ${APP_NAME} without installing JACK first?" diff --git a/src/res/translation/wininstaller/es.nsi b/src/res/translation/wininstaller/es.nsi index 3569c74878..d12f51fdcf 100644 --- a/src/res/translation/wininstaller/es.nsi +++ b/src/res/translation/wininstaller/es.nsi @@ -22,10 +22,10 @@ LangString ASIO_DRIVER_HEADER ${LANG_SPANISH} \ "Driver ASIO" LangString ASIO_DRIVER_SUB ${LANG_SPANISH} \ - "Para utilizar Jamulus, necesitas un driver ASIO" + "Para utilizar ${APP_NAME}, necesitas un driver ASIO" LangString ASIO_DRIVER_EXPLAIN ${LANG_SPANISH} \ - "Jamulus necesita un driver ASIO para proporcionar una baja latencia. Más información:" + "${APP_NAME} necesita un driver ASIO para proporcionar una baja latencia. Más información:" LangString ASIO_DRIVER_MORE_INFO ${LANG_SPANISH} \ "Más información sobre ASIO en jamulus.io" @@ -35,3 +35,15 @@ LangString ASIO_DRIVER_MORE_INFO_URL ${LANG_SPANISH} \ LangString ASIO_EXIT_NO_DRIVER ${LANG_SPANISH} \ "${APP_NAME} necesita un driver de audio ASIO para funcionar, pero no hemos podido encontrar ninguno en tu PC. Deberías instalar uno como ASIO4ALL (más información en jamulus.io, en Instalación en Windows). ¿Aún quieres seguir con la instalación de ${APP_NAME} primero?" + +LangString JACK_DRIVER_HEADER ${LANG_SPANISH} \ + "JACK Audio Connection Kit" + +LangString JACK_DRIVER_SUB ${LANG_SPANISH} \ + "To use this version of ${APP_NAME}, you need use the JACK Audio Connection Kit" + +LangString JACK_DRIVER_EXPLAIN ${LANG_SPANISH} \ + "This version of ${APP_NAME} is making use of the JACK Audio Connection Kit. Please make sure this has been installed or download the standard version of ${APP_NAME} on jamulus.io which is using ASIO." + +LangString JACK_EXIT_NO_DRIVER ${LANG_SPANISH} \ + "This ${APP_NAME} version needs the JACK Audio Connection Kit to work, but it doesn't seem to be installed on your PC. You should install JACK for Windows first. Do you still want to continue with the installation of ${APP_NAME} without installing JACK first?" diff --git a/src/res/translation/wininstaller/fr.nsi b/src/res/translation/wininstaller/fr.nsi index 1113062c9d..ec05f6f31e 100644 --- a/src/res/translation/wininstaller/fr.nsi +++ b/src/res/translation/wininstaller/fr.nsi @@ -22,10 +22,10 @@ LangString ASIO_DRIVER_HEADER ${LANG_FRENCH} \ "Pilote ASIO" LangString ASIO_DRIVER_SUB ${LANG_FRENCH} \ - "Pour utiliser Jamulus, vous avez besoin d'un pilote ASIO" + "Pour utiliser ${APP_NAME}, vous avez besoin d'un pilote ASIO" LangString ASIO_DRIVER_EXPLAIN ${LANG_FRENCH} \ - "Jamulus a besoin d'un pilote ASIO pour fournir un son à faible latence. Plus d'informations : " + "${APP_NAME} a besoin d'un pilote ASIO pour fournir un son à faible latence. Plus d'informations : " LangString ASIO_DRIVER_MORE_INFO ${LANG_FRENCH} \ "Plus d'informations à propos d'ASIO sur jamulus.io" @@ -35,3 +35,15 @@ LangString ASIO_DRIVER_MORE_INFO_URL ${LANG_FRENCH} \ LangString ASIO_EXIT_NO_DRIVER ${LANG_FRENCH} \ "${APP_NAME} a besoin d'un pilote audio ASIO pour fonctionner, mais nous n'avons pas pu en trouver sur votre PC. Vous devriez en installer un comme ASIO4ALL (Plus d'informations sur jamulus.io sous Installation sous Windows). Voulez-vous tout de même continuer l'installation de ${APP_NAME} en premier ? " + +LangString JACK_DRIVER_HEADER ${LANG_FRENCH} \ + "JACK Audio Connection Kit" + +LangString JACK_DRIVER_SUB ${LANG_FRENCH} \ + "To use this version of ${APP_NAME}, you need use the JACK Audio Connection Kit" + +LangString JACK_DRIVER_EXPLAIN ${LANG_FRENCH} \ + "This version of ${APP_NAME} is making use of the JACK Audio Connection Kit. Please make sure this has been installed or download the standard version of ${APP_NAME} on jamulus.io which is using ASIO." + +LangString JACK_EXIT_NO_DRIVER ${LANG_FRENCH} \ + "This ${APP_NAME} version needs the JACK Audio Connection Kit to work, but it doesn't seem to be installed on your PC. You should install JACK for Windows first. Do you still want to continue with the installation of ${APP_NAME} without installing JACK first?" diff --git a/src/res/translation/wininstaller/it.nsi b/src/res/translation/wininstaller/it.nsi index 2735e8b0cd..3f6139354a 100644 --- a/src/res/translation/wininstaller/it.nsi +++ b/src/res/translation/wininstaller/it.nsi @@ -10,7 +10,7 @@ LangString RUNNING_APP_MSG ${LANG_ITALIAN} \ "${APP_NAME} è in esecuzione. Chiudere l'applicazione prima di eseguire l'installazione." LangString OLD_WRONG_VER_FOUND ${LANG_ITALIAN} \ - "E' stata trovata una precedente versione di Jamulus nella cartella Programmi. E' altamente consigliato rimuoverla prima di procedere con l'insallazione di una nuova versione di Jamulus. Vuoi rimuoverla adesso?" + "E' stata trovata una precedente versione di ${APP_NAME} nella cartella Programmi. E' altamente consigliato rimuoverla prima di procedere con l'insallazione di una nuova versione di ${APP_NAME}. Vuoi rimuoverla adesso?" LangString OLD_WRONG_VER_FOUND_CONFIRM ${LANG_ITALIAN} \ "Se non viene cancellata l'installazione potrebbe non andare a buona fine! Sei sicuro di voler continuare?" @@ -22,10 +22,10 @@ LangString ASIO_DRIVER_HEADER ${LANG_ITALIAN} \ "ASIO driver" LangString ASIO_DRIVER_SUB ${LANG_ITALIAN} \ - "Per usare Jamulus hai bisogno dei driver ASIO" + "Per usare ${APP_NAME} hai bisogno dei driver ASIO" LangString ASIO_DRIVER_EXPLAIN ${LANG_ITALIAN} \ - "Jamulus ha bisogno dei driver ASIO al fine di garantire una bassa latenza audio. Maggiori Informazioni:" + "${APP_NAME} ha bisogno dei driver ASIO al fine di garantire una bassa latenza audio. Maggiori Informazioni:" LangString ASIO_DRIVER_MORE_INFO ${LANG_ITALIAN} \ "Maggiori informazioni sui driver ASIO disponibili su jamulus.io" @@ -34,4 +34,16 @@ LangString ASIO_DRIVER_MORE_INFO_URL ${LANG_ITALIAN} \ "https://jamulus.io/wiki/Installation-for-Windows#asio" LangString ASIO_EXIT_NO_DRIVER ${LANG_ITALIAN} \ - "Per assicurare una bassa latenza, Jamulus usa i driver ASIO. Questi non sono presenti sul PC, puoi installarne una versione come gli ASIO4ALL. Maggiori informazione su jamulus.io, trovi il link nella pagina in cui ti trovavi. Per tornarci premi su NO. Se premi 'Si', l'installazione continuerà." + "Per assicurare una bassa latenza, ${APP_NAME} usa i driver ASIO. Questi non sono presenti sul PC, puoi installarne una versione come gli ASIO4ALL. Maggiori informazione su jamulus.io, trovi il link nella pagina in cui ti trovavi. Per tornarci premi su NO. Se premi 'Si', l'installazione continuerà." + +LangString JACK_DRIVER_HEADER ${LANG_ITALIAN} \ + "JACK Audio Connection Kit" + +LangString JACK_DRIVER_SUB ${LANG_ITALIAN} \ + "To use this version of ${APP_NAME}, you need use the JACK Audio Connection Kit" + +LangString JACK_DRIVER_EXPLAIN ${LANG_ITALIAN} \ + "This version of ${APP_NAME} is making use of the JACK Audio Connection Kit. Please make sure this has been installed or download the standard version of ${APP_NAME} on jamulus.io which is using ASIO." + +LangString JACK_EXIT_NO_DRIVER ${LANG_ITALIAN} \ + "This ${APP_NAME} version needs the JACK Audio Connection Kit to work, but it doesn't seem to be installed on your PC. You should install JACK for Windows first. Do you still want to continue with the installation of ${APP_NAME} without installing JACK first?" diff --git a/src/res/translation/wininstaller/nl.nsi b/src/res/translation/wininstaller/nl.nsi index 9161a6964b..f1943c2ad2 100644 --- a/src/res/translation/wininstaller/nl.nsi +++ b/src/res/translation/wininstaller/nl.nsi @@ -22,10 +22,10 @@ LangString ASIO_DRIVER_HEADER ${LANG_DUTCH} \ "ASIO stuurprogramma" LangString ASIO_DRIVER_SUB ${LANG_DUTCH} \ - "Om Jamulus te kunnen gebruiken heeft u een ASIO stuurprogramma nodig" + "Om ${APP_NAME} te kunnen gebruiken heeft u een ASIO stuurprogramma nodig" LangString ASIO_DRIVER_EXPLAIN ${LANG_DUTCH} \ - "Jamulus heeft een ASIO stuurprogramma nodig voor low latency audio. Meer informatie:" + "${APP_NAME} heeft een ASIO stuurprogramma nodig voor low latency audio. Meer informatie:" LangString ASIO_DRIVER_MORE_INFO ${LANG_DUTCH} \ "Meer informatie over ASIO op jamulus.io" @@ -35,3 +35,15 @@ LangString ASIO_DRIVER_MORE_INFO_URL ${LANG_DUTCH} \ LangString ASIO_EXIT_NO_DRIVER ${LANG_DUTCH} \ "${APP_NAME} heeft een ASIO audio-stuurprogramma nodig om te functioneren, en we hebben er geen op uw PC gevonden. U dient een stuurprogramma als ASIO4ALL te installeren (Meer informatie op jamulus.io onder Installation for Windows). Wilt u nog steeds verder gaan met de installatie van ${APP_NAME}?" + +LangString JACK_DRIVER_HEADER ${LANG_DUTCH} \ + "JACK Audio Connection Kit" + +LangString JACK_DRIVER_SUB ${LANG_DUTCH} \ + "Om deze versie van ${APP_NAME} te kunnen gebruiken heeft u de JACK Audio Connection Kit nodig" + +LangString JACK_DRIVER_EXPLAIN ${LANG_DUTCH} \ + "Deze versie van ${APP_NAME} maakt gebruik van de JACK Audio Connection Kit. Zorg ervoor dat deze geïnstalleerd is of download de standaard versie van ${APP_NAME} op jamulus.io die gebruikt maakt van ASIO." + +LangString JACK_EXIT_NO_DRIVER ${LANG_DUTCH} \ + "Deze ${APP_NAME} versie heeft de JACK Audio Connection Kit nodig om te functioneren, en we hebben deze niet op uw PC gevonden. U dient deze eerst zelf te installeren. Wilt u nog steeds verder gaan met de installatie van ${APP_NAME} zonder eerst JACK te installeren?" diff --git a/src/res/translation/wininstaller/pl.nsi b/src/res/translation/wininstaller/pl.nsi index 219917670d..5b4bce5737 100644 --- a/src/res/translation/wininstaller/pl.nsi +++ b/src/res/translation/wininstaller/pl.nsi @@ -22,10 +22,10 @@ LangString ASIO_DRIVER_HEADER ${LANG_POLISH} \ "sterownik ASIO" LangString ASIO_DRIVER_SUB ${LANG_POLISH} \ - "Żeby używać Jamulus-a potrzebny jest sterownik ASIO" + "Żeby używać ${APP_NAME}-a potrzebny jest sterownik ASIO" LangString ASIO_DRIVER_EXPLAIN ${LANG_POLISH} \ - "Jamulus wymaga sterownika ASIO żeby zapewnić dźwięk o niskich opóźnieniach. Więcej informacji:" + "${APP_NAME} wymaga sterownika ASIO żeby zapewnić dźwięk o niskich opóźnieniach. Więcej informacji:" LangString ASIO_DRIVER_MORE_INFO ${LANG_POLISH} \ "Więcej informacji o ASIO na jamulus.io" @@ -35,3 +35,15 @@ LangString ASIO_DRIVER_MORE_INFO_URL ${LANG_POLISH} \ LangString ASIO_EXIT_NO_DRIVER ${LANG_POLISH} \ "${APP_NAME} wymaga sterownika ASIO do działania, ale nie można go było znaleźć na tym komputerze. Powinieneś zainstalować np. ASIO4ALL (Więcej informacji na jamulus.io w sekcji Istalacja dla Windows). Czy nadal chcesz najpierw zainstalować ${APP_NAME}?" + +LangString JACK_DRIVER_HEADER ${LANG_POLISH} \ + "JACK Audio Connection Kit" + +LangString JACK_DRIVER_SUB ${LANG_POLISH} \ + "To use this version of ${APP_NAME}, you need use the JACK Audio Connection Kit" + +LangString JACK_DRIVER_EXPLAIN ${LANG_POLISH} \ + "This version of ${APP_NAME} is making use of the JACK Audio Connection Kit. Please make sure this has been installed or download the standard version of ${APP_NAME} on jamulus.io which is using ASIO." + +LangString JACK_EXIT_NO_DRIVER ${LANG_POLISH} \ + "This ${APP_NAME} version needs the JACK Audio Connection Kit to work, but it doesn't seem to be installed on your PC. You should install JACK for Windows first. Do you still want to continue with the installation of ${APP_NAME} without installing JACK first?" diff --git a/src/res/translation/wininstaller/pt.nsi b/src/res/translation/wininstaller/pt.nsi index 676dcfd89a..f8c8e240ad 100644 --- a/src/res/translation/wininstaller/pt.nsi +++ b/src/res/translation/wininstaller/pt.nsi @@ -22,10 +22,10 @@ LangString ASIO_DRIVER_HEADER ${LANG_PORTUGUESE} \ "Driver ASIO" LangString ASIO_DRIVER_SUB ${LANG_PORTUGUESE} \ - "Para usar o Jamulus, precisa de um driver ASIO" + "Para usar o ${APP_NAME}, precisa de um driver ASIO" LangString ASIO_DRIVER_EXPLAIN ${LANG_PORTUGUESE} \ - "O Jamulus precisa de um driver ASIO para fornecer áudio de baixa latência. Mais informações:" + "O ${APP_NAME} precisa de um driver ASIO para fornecer áudio de baixa latência. Mais informações:" LangString ASIO_DRIVER_MORE_INFO ${LANG_PORTUGUESE} \ "Mais informações sobre o ASIO em jamulus.io" @@ -35,3 +35,15 @@ LangString ASIO_DRIVER_MORE_INFO_URL ${LANG_PORTUGUESE} \ LangString ASIO_EXIT_NO_DRIVER ${LANG_PORTUGUESE} \ "O ${APP_NAME} precisa de um driver ASIO para funcionar, mas não conseguimos encontrar nenhum no seu computador. Deve instalar um como o ASIO4ALL (Mais informações no jamulus.io, em Installation for Windows). Pretende proceder com a instalação do ${APP_NAME} primeiro?" + +LangString JACK_DRIVER_HEADER ${LANG_PORTUGUESE} \ + "JACK Audio Connection Kit" + +LangString JACK_DRIVER_SUB ${LANG_PORTUGUESE} \ + "To use this version of ${APP_NAME}, you need use the JACK Audio Connection Kit" + +LangString JACK_DRIVER_EXPLAIN ${LANG_PORTUGUESE} \ + "This version of ${APP_NAME} is making use of the JACK Audio Connection Kit. Please make sure this has been installed or download the standard version of ${APP_NAME} on jamulus.io which is using ASIO." + +LangString JACK_EXIT_NO_DRIVER ${LANG_PORTUGUESE} \ + "This ${APP_NAME} version needs the JACK Audio Connection Kit to work, but it doesn't seem to be installed on your PC. You should install JACK for Windows first. Do you still want to continue with the installation of ${APP_NAME} without installing JACK first?" diff --git a/src/res/translation/wininstaller/pt_br.nsi b/src/res/translation/wininstaller/pt_br.nsi index 18feb809e9..40ce1586b6 100644 --- a/src/res/translation/wininstaller/pt_br.nsi +++ b/src/res/translation/wininstaller/pt_br.nsi @@ -22,10 +22,10 @@ LangString ASIO_DRIVER_HEADER ${LANG_PORTUGUESEBR} \ "Driver ASIO" LangString ASIO_DRIVER_SUB ${LANG_PORTUGUESEBR} \ - "Para usar Jamulus, você necessita de um driver ASIO" + "Para usar ${APP_NAME}, você necessita de um driver ASIO" LangString ASIO_DRIVER_EXPLAIN ${LANG_PORTUGUESEBR} \ - "Jamulus necessita de um driver ASIO para fornecer áudio com baixa latência. Mais informações:" + "${APP_NAME} necessita de um driver ASIO para fornecer áudio com baixa latência. Mais informações:" LangString ASIO_DRIVER_MORE_INFO ${LANG_PORTUGUESEBR} \ "Mais informações sobre ASIO em jamulus.io" @@ -35,3 +35,15 @@ LangString ASIO_DRIVER_MORE_INFO_URL ${LANG_PORTUGUESEBR} \ LangString ASIO_EXIT_NO_DRIVER ${LANG_PORTUGUESEBR} \ "${APP_NAME} necessita de um driver de áudio ASIO para funcionar, mas não conseguimos encontrar um no seu PC. Você deve instalar um como ASIO4ALL (Mais informações em jamulus.io em Instalação para Windows). Ainda deseja continuar com a instalação de ${APP_NAME} primeiro?" + +LangString JACK_DRIVER_HEADER ${LANG_PORTUGUESEBR} \ + "JACK Audio Connection Kit" + +LangString JACK_DRIVER_SUB ${LANG_PORTUGUESEBR} \ + "To use this version of ${APP_NAME}, you need use the JACK Audio Connection Kit" + +LangString JACK_DRIVER_EXPLAIN ${LANG_PORTUGUESEBR} \ + "This version of ${APP_NAME} is making use of the JACK Audio Connection Kit. Please make sure this has been installed or download the standard version of ${APP_NAME} on jamulus.io which is using ASIO." + +LangString JACK_EXIT_NO_DRIVER ${LANG_PORTUGUESEBR} \ + "This ${APP_NAME} version needs the JACK Audio Connection Kit to work, but it doesn't seem to be installed on your PC. You should install JACK for Windows first. Do you still want to continue with the installation of ${APP_NAME} without installing JACK first?" diff --git a/src/res/translation/wininstaller/se.nsi b/src/res/translation/wininstaller/se.nsi index 9842f12802..951226d8f4 100644 --- a/src/res/translation/wininstaller/se.nsi +++ b/src/res/translation/wininstaller/se.nsi @@ -22,7 +22,7 @@ LangString ASIO_DRIVER_HEADER ${LANG_SWEDISH} \ "ASIO-ljuddrivrutin" LangString ASIO_DRIVER_SUB ${LANG_SWEDISH} \ - "För att kunna använda Jamulus behöver du en ASIO-ljuddrivrutin" + "För att kunna använda ${APP_NAME} behöver du en ASIO-ljuddrivrutin" LangString ASIO_DRIVER_EXPLAIN ${LANG_SWEDISH} \ "${APP_NAME} behöver en ASIO-ljuddrivrutin för att ge ljud med låg latens. Mer information:" @@ -35,3 +35,15 @@ LangString ASIO_DRIVER_MORE_INFO_URL ${LANG_SWEDISH} \ LangString ASIO_EXIT_NO_DRIVER ${LANG_SWEDISH} \ "${APP_NAME} behöver en ASIO-ljuddrivrutin för att fungera, men vi kunde inte hitta någon på din dator. Du bör installera en som ASIO4ALL (Mer information på jamulus.io under $\"Installation for Windows$\"). Vill du fortfarande fortsätta med installationen av ${APP_NAME} först?" + +LangString JACK_DRIVER_HEADER ${LANG_SWEDISH} \ + "JACK Audio Connection Kit" + +LangString JACK_DRIVER_SUB ${LANG_SWEDISH} \ + "To use this version of ${APP_NAME}, you need use the JACK Audio Connection Kit" + +LangString JACK_DRIVER_EXPLAIN ${LANG_SWEDISH} \ + "This version of ${APP_NAME} is making use of the JACK Audio Connection Kit. Please make sure this has been installed or download the standard version of ${APP_NAME} on jamulus.io which is using ASIO." + +LangString JACK_EXIT_NO_DRIVER ${LANG_SWEDISH} \ + "This ${APP_NAME} version needs the JACK Audio Connection Kit to work, but it doesn't seem to be installed on your PC. You should install JACK for Windows first. Do you still want to continue with the installation of ${APP_NAME} without installing JACK first?" diff --git a/windows/deploy_windows.ps1 b/windows/deploy_windows.ps1 index 8e1bad210b..cf4ce5f3ba 100644 --- a/windows/deploy_windows.ps1 +++ b/windows/deploy_windows.ps1 @@ -6,7 +6,8 @@ param( [string] $AsioSDKName = "asiosdk_2.3.3_2019-06-14", [string] $AsioSDKUrl = "https://download.steinberg.net/sdk_downloads/asiosdk_2.3.3_2019-06-14.zip", [string] $NsisName = "nsis-3.06.1", - [string] $NsisUrl = "https://downloads.sourceforge.net/project/nsis/NSIS%203/3.06.1/nsis-3.06.1.zip" + [string] $NsisUrl = "https://downloads.sourceforge.net/project/nsis/NSIS%203/3.06.1/nsis-3.06.1.zip", + [string] $BuildOption = "" ) # change directory to the directory above (if needed) @@ -25,7 +26,7 @@ $ErrorActionPreference = "Stop" # Execute native command with errorlevel handling Function Invoke-Native-Command { - Param( + param( [string] $Command, [string[]] $Arguments ) @@ -51,7 +52,7 @@ Function Clean-Build-Environment # For sourceforge links we need to get the correct mirror (especially NISIS) Thanks: https://www.powershellmagazine.com/2013/01/29/pstip-retrieve-a-redirected-url/ Function Get-RedirectedUrl { - Param ( + param( [Parameter(Mandatory=$true)] [String]$URL ) @@ -222,7 +223,7 @@ Function Build-App ) Invoke-Native-Command -Command "$Env:QtQmakePath" ` - -Arguments ("$RootPath\$AppName.pro", "CONFIG+=$BuildConfig $BuildArch", ` + -Arguments ("$RootPath\$AppName.pro", "CONFIG+=$BuildConfig $BuildArch $BuildOption", ` "-o", "$BuildPath\Makefile") Set-Location -Path $BuildPath @@ -256,6 +257,10 @@ function Build-App-Variants # Build Windows installer Function Build-Installer { + param( + [string] $BuildOption + ) + foreach ($_ in Get-Content -Path "$RootPath\$AppName.pro") { if ($_ -Match "^VERSION *= *(.*)$") @@ -265,10 +270,21 @@ Function Build-Installer } } - Invoke-Native-Command -Command "$WindowsPath\NSIS\makensis" ` - -Arguments ("/v4", "/DAPP_NAME=$AppName", "/DAPP_VERSION=$AppVersion", ` - "/DROOT_PATH=$RootPath", "/DWINDOWS_PATH=$WindowsPath", "/DDEPLOY_PATH=$DeployPath", ` - "$WindowsPath\installer.nsi") + if ($BuildOption -ne "") + { + Invoke-Native-Command -Command "$WindowsPath\NSIS\makensis" ` + -Arguments ("/v4", "/DAPP_NAME=$AppName", "/DAPP_VERSION=$AppVersion", ` + "/DROOT_PATH=$RootPath", "/DWINDOWS_PATH=$WindowsPath", "/DDEPLOY_PATH=$DeployPath", ` + "/DBUILD_OPTION=$BuildOption", ` + "$WindowsPath\installer.nsi") + } + else + { + Invoke-Native-Command -Command "$WindowsPath\NSIS\makensis" ` + -Arguments ("/v4", "/DAPP_NAME=$AppName", "/DAPP_VERSION=$AppVersion", ` + "/DROOT_PATH=$RootPath", "/DWINDOWS_PATH=$WindowsPath", "/DDEPLOY_PATH=$DeployPath", ` + "$WindowsPath\installer.nsi") + } } # Build and copy NS-Process dll @@ -299,4 +315,4 @@ Clean-Build-Environment Install-Dependencies Build-App-Variants -QtInstallPath $QtInstallPath Build-NSProcess -QtInstallPath $QtInstallPath -Build-Installer +Build-Installer -BuildOption $BuildOption diff --git a/windows/installer.nsi b/windows/installer.nsi index 559e85fc96..1c739aeed8 100644 --- a/windows/installer.nsi +++ b/windows/installer.nsi @@ -40,7 +40,12 @@ BrandingText "${APP_NAME}. Make music online. With friends. For free." ; Add support for copying registry keys -!insertmacro COPY_REGISTRY_KEY +!if ${BUILD_OPTION} != "jackonwindows" + ; This macro is only needed when using ASIO4ALL. + ; Technically, we cannot detect this easily. + ; Therefore, we only insert the macro when not building for JACK. + !insertmacro COPY_REGISTRY_KEY +!endif ; Installer graphical element configuration !define MUI_ICON "${WINDOWS_PATH}\mainicon.ico" @@ -60,7 +65,12 @@ BrandingText "${APP_NAME}. Make music online. With friends. For free." !define MUI_PAGE_CUSTOMFUNCTION_PRE AbortOnRunningApp !insertmacro MUI_PAGE_WELCOME -Page Custom ASIOCheckInstalled ExitASIOInstalled +; Display dialog based on BuildOption set +!if ${BUILD_OPTION} == "jackonwindows" + Page Custom JACKCheckInstalled ExitJACKInstalled +!else + Page Custom ASIOCheckInstalled ExitASIOInstalled +!endif !insertmacro MUI_PAGE_LICENSE "${ROOT_PATH}\COPYING" !define MUI_PAGE_CUSTOMFUNCTION_LEAVE ValidateDestinationFolder @@ -105,7 +115,11 @@ Page Custom ASIOCheckInstalled ExitASIOInstalled Var Dialog Var Label -Var Button + +!if ${BUILD_OPTION} != "jackonwindows" + ;Only Define Button when not using jack dialogs + Var Button +!endif ; Define user choices @@ -219,30 +233,32 @@ Section "Install_64Bit" INST_64 goto quit ${EndIf} - ; Copy old ASIO4ALL registry configuration + !if ${BUILD_OPTION} != "jackonwindows" + ; Copy old ASIO4ALL registry configuration - IntOp $0 0 + 0 - EnumStart: - EnumRegKey $R1 HKEY_USERS "" $0 ; foreach user - IntOp $0 $0 + 1 - StrCmp $R1 ".DEFAULT" EnumStart - StrCmp $R1 "" EnumEnd + IntOp $0 0 + 0 + EnumStart: + EnumRegKey $R1 HKEY_USERS "" $0 ; foreach user + IntOp $0 $0 + 1 + StrCmp $R1 ".DEFAULT" EnumStart + StrCmp $R1 "" EnumEnd - ; check if new key already exists. If this is the case, we'll not continue - ClearErrors - EnumRegKey $1 HKU "$R1\SOFTWARE\ASIO4ALL v2 by Wuschel\7A49ECC9" 0 - IfErrors 0 EnumStart ; if the above line gives an error, it cannot find the key --> We'll continue + ; check if new key already exists. If this is the case, we'll not continue + ClearErrors + EnumRegKey $1 HKU "$R1\SOFTWARE\ASIO4ALL v2 by Wuschel\7A49ECC9" 0 + IfErrors 0 EnumStart ; if the above line gives an error, it cannot find the key --> We'll continue - ; check if old key exists. If this is true, we'll continue and move the content of the old one to the new one. - ClearErrors - EnumRegKey $1 HKU "$R1\SOFTWARE\ASIO4ALL v2 by Wuschel\8A9E7A56" 0 - IfErrors EnumStart 0 ; if the above line gives an error, it cannot find the key --> skip this user + ; check if old key exists. If this is true, we'll continue and move the content of the old one to the new one. + ClearErrors + EnumRegKey $1 HKU "$R1\SOFTWARE\ASIO4ALL v2 by Wuschel\8A9E7A56" 0 + IfErrors EnumStart 0 ; if the above line gives an error, it cannot find the key --> skip this user - ; copy the registry key - ${COPY_REGISTRY_KEY} HKU "$R1\SOFTWARE\ASIO4ALL v2 by Wuschel\8A9E7A56" HKU "$R1\SOFTWARE\ASIO4ALL v2 by Wuschel\7A49ECC9" + ; copy the registry key + ${COPY_REGISTRY_KEY} HKU "$R1\SOFTWARE\ASIO4ALL v2 by Wuschel\8A9E7A56" HKU "$R1\SOFTWARE\ASIO4ALL v2 by Wuschel\7A49ECC9" - goto EnumStart - EnumEnd: + goto EnumStart + EnumEnd: + !endif goto continueinstall @@ -365,45 +381,81 @@ Function createdesktopshortcut CreateShortCut "$DESKTOP\${APP_NAME}.lnk" "$INSTDIR\${APP_EXE}" FunctionEnd -Function ASIOCheckInstalled - - ; insert ASIO install page if no ASIO driver was found - ClearErrors - EnumRegKey $0 HKLM "SOFTWARE\ASIO" 0 - - IfErrors 0 ASIOExists - !insertmacro MUI_HEADER_TEXT "$(ASIO_DRIVER_HEADER)" "$(ASIO_DRIVER_SUB)" - nsDialogs::Create 1018 - Pop $Dialog - ${If} $Dialog == error - Abort - ${Endif} - - ${NSD_CreateLabel} 0 0 100% 20u "$(ASIO_DRIVER_EXPLAIN)" - Pop $Label - ${NSD_CreateButton} 0 21u 100% 15u "$(ASIO_DRIVER_MORE_INFO)" - Pop $Button - ${NSD_OnClick} $Button OpenASIOHelpPage - - nsDialogs::Show - - ASIOExists: - -FunctionEnd - -Function OpenASIOHelpPage - ExecShell "open" "$(ASIO_DRIVER_MORE_INFO_URL)" -FunctionEnd - -Function ExitASIOInstalled - ClearErrors - EnumRegKey $0 HKLM "SOFTWARE\ASIO" 0 - IfErrors 0 SkipMessage - MessageBox MB_YESNO|MB_ICONEXCLAMATION "$(ASIO_EXIT_NO_DRIVER)" /sd IDNO IDYES SkipMessage - Abort - SkipMessage: - -FunctionEnd +; Define functions for JACK when using the jackonwindows buildoption, else use default ASIO functions +!if ${BUILD_OPTION} == "jackonwindows" + Function JACKCheckInstalled + + ; insert JACK install page if no JACK driver was found + ClearErrors + EnumRegKey $0 HKLM "SOFTWARE\JACK" 0 + + IfErrors 0 JACKExists + !insertmacro MUI_HEADER_TEXT "$(JACK_DRIVER_HEADER)" "$(JACK_DRIVER_SUB)" + nsDialogs::Create 1018 + Pop $Dialog + ${If} $Dialog == error + Abort + ${Endif} + + ${NSD_CreateLabel} 0 0 100% 40u "$(JACK_DRIVER_EXPLAIN)" + Pop $Label + + nsDialogs::Show + + JACKExists: + + FunctionEnd + + Function ExitJACKInstalled + ClearErrors + EnumRegKey $0 HKLM "SOFTWARE\JACK" 0 + IfErrors 0 SkipMessage + MessageBox MB_YESNO|MB_ICONEXCLAMATION "$(JACK_EXIT_NO_DRIVER)" /sd IDNO IDYES SkipMessage + Abort + SkipMessage: + + FunctionEnd +!else + Function ASIOCheckInstalled + + ; insert ASIO install page if no ASIO driver was found + ClearErrors + EnumRegKey $0 HKLM "SOFTWARE\ASIO" 0 + + IfErrors 0 ASIOExists + !insertmacro MUI_HEADER_TEXT "$(ASIO_DRIVER_HEADER)" "$(ASIO_DRIVER_SUB)" + nsDialogs::Create 1018 + Pop $Dialog + ${If} $Dialog == error + Abort + ${Endif} + + ${NSD_CreateLabel} 0 0 100% 20u "$(ASIO_DRIVER_EXPLAIN)" + Pop $Label + ${NSD_CreateButton} 0 21u 100% 15u "$(ASIO_DRIVER_MORE_INFO)" + Pop $Button + ${NSD_OnClick} $Button OpenASIOHelpPage + + nsDialogs::Show + + ASIOExists: + + FunctionEnd + + Function OpenASIOHelpPage + ExecShell "open" "$(ASIO_DRIVER_MORE_INFO_URL)" + FunctionEnd + + Function ExitASIOInstalled + ClearErrors + EnumRegKey $0 HKLM "SOFTWARE\ASIO" 0 + IfErrors 0 SkipMessage + MessageBox MB_YESNO|MB_ICONEXCLAMATION "$(ASIO_EXIT_NO_DRIVER)" /sd IDNO IDYES SkipMessage + Abort + SkipMessage: + + FunctionEnd +!endif ; Uninstaller !macro un.InstallFiles buildArch