diff --git a/.gitignore b/.gitignore index 4e6a55655fb035209fce4f8338740901bc0a064b..9601030a091d3371acb9d2a2f1a1876ab0913f34 100644 --- a/.gitignore +++ b/.gitignore @@ -11,4 +11,4 @@ release/ qrencode-win32/ *.dll .gitignore -*.ps1 +*.qm \ No newline at end of file diff --git a/copy-runtime-files.ps1 b/copy-runtime-files.ps1 new file mode 100644 index 0000000000000000000000000000000000000000..db9ef2230006c0a2dff12a78de138efdc3e7ae09 --- /dev/null +++ b/copy-runtime-files.ps1 @@ -0,0 +1,136 @@ +write-host "copying runtime files..." + +$QtDir = "C:\Qt\5.9.4\msvc2017_64" +$ClientDir = split-path -parent $MyInvocation.MyCommand.Definition + +$OutDir = $ClientDir + "\x64\Release" +New-Item -ItemType directory -Path $OutDir -Force + +if (-not (Test-Path env:daemonDir)) { + $env:daemonDir = '$ClientDir\..\daemon' +} + +if (-not (Test-Path env:lrcDir)) { + $env:lrcDir = '$ClientDir\..\lrc' +} + +# dependency bin files +$FilesToCopy = @( + "$env:daemonDir\contrib\build\ffmpeg\Build\win32\x64\bin\avcodec-58.dll", + "$env:daemonDir\contrib\build\ffmpeg\Build\win32\x64\bin\avutil-56.dll", + "$env:daemonDir\contrib\build\ffmpeg\Build\win32\x64\bin\avformat-58.dll", + "$env:daemonDir\contrib\build\ffmpeg\Build\win32\x64\bin\avdevice-58.dll", + "$env:daemonDir\contrib\build\ffmpeg\Build\win32\x64\bin\swresample-3.dll", + "$env:daemonDir\contrib\build\ffmpeg\Build\win32\x64\bin\swscale-5.dll", + "$env:daemonDir\contrib\build\ffmpeg\Build\win32\x64\bin\avfilter-7.dll", + "$env:daemonDir\contrib\build\restbed\dependency\openssl\out32dll\libeay32.dll", + "$env:daemonDir\contrib\build\restbed\dependency\openssl\out32dll\ssleay32.dll", + "$ClientDir\winsparkle\x64\Release\WinSparkle.dll", + "$ClientDir\ring.nsi", + "$ClientDir\images\ring.ico" + ) +foreach ($i in $FilesToCopy) { + write-host "copying: " $i " => " $OutDir + Copy-Item -Path $i -Destination $OutDir -Force +} + +############ +# qt +############ + +# qt bin files +$FilesToCopy = @( + "$QtDir\bin\Qt5Core.dll", + "$QtDir\bin\Qt5Gui.dll", + "$QtDir\bin\Qt5Network.dll", + "$QtDir\bin\Qt5Positioning.dll", + "$QtDir\bin\Qt5PrintSupport.dll", + "$QtDir\bin\Qt5Qml.dll", + "$QtDir\bin\Qt5Quick.dll", + "$QtDir\bin\Qt5QuickWidgets.dll", + "$QtDir\bin\Qt5Sql.dll", + "$QtDir\bin\Qt5Svg.dll", + "$QtDir\bin\Qt5WebChannel.dll", + "$QtDir\bin\Qt5WebEngine.dll", + "$QtDir\bin\Qt5WebEngineCore.dll", + "$QtDir\bin\Qt5WebEngineWidgets.dll", + "$QtDir\bin\Qt5Widgets.dll", + "$QtDir\bin\Qt5WinExtras.dll", + "$QtDir\bin\Qt5Xml.dll", + "$QtDir\bin\QtWebEngineProcess.exe", + "$QtDir\resources\qtwebengine_resources.pak", + "$QtDir\resources\icudtl.dat" + ) +foreach ($i in $FilesToCopy) { + write-host "copying: " $i " => " $OutDir + Copy-Item -Path $i -Destination $OutDir -Force +} + +# qt imageformats +$FilesToCopy = @( + "$QtDir\plugins\imageformats\qgif.dll", + "$QtDir\plugins\imageformats\qico.dll", + "$QtDir\plugins\imageformats\qjpeg.dll", + "$QtDir\plugins\imageformats\qsvg.dll" + ) +$CopyDir = $OutDir + "\imageformats" +New-Item -ItemType directory -Path $CopyDir -Force +foreach ($i in $FilesToCopy) { + write-host "copying: " $i " => " $CopyDir + Copy-Item -Path $i -Destination $CopyDir -Force +} + +# qt platform dll for windows +$CopyDir = $OutDir + "\platforms" +New-Item -ItemType directory -Path $CopyDir -Force +$file = "$QtDir\plugins\platforms\qwindows.dll" +write-host "copying: " $file " => " $CopyDir +Copy-Item -Path $file -Destination $CopyDir -Force + +# qt sql driver +$CopyDir = $OutDir + "\sqldrivers" +New-Item -ItemType directory -Path $CopyDir -Force +$file = "$QtDir\plugins\sqldrivers\qsqlite.dll" +write-host "copying: " $file " => " $CopyDir +Copy-Item -Path $file -Destination $CopyDir -Force + +# ringtones +$CopyDir = $OutDir + "\ringtones" +New-Item -ItemType directory -Path $CopyDir -Force +$RingtonePath = "$ClientDir\..\daemon\ringtones" +write-host "copying ringtones..." +Get-ChildItem -Path $RingtonePath -Include *.ul, *.wav, *.ogg -Recurse | ForEach-Object { + write-host "copying ringtone: " $_.FullName " => " $CopyDir + Copy-Item -Path $_.FullName -Destination $CopyDir -Force –Recurse +} + +# qt translations +$lrelease = "$QtDir\bin\lrelease.exe" + +# lrc translations +$lrcTSPath = "$env:lrcDir\translations" +Get-ChildItem -Path $lrcTSPath -Include *.ts -Recurse | ForEach-Object { + & $lrelease $_.FullName +} +$CopyDir = $OutDir + "\share\libringclient\translations" +New-Item -ItemType directory -Path $CopyDir -Force +write-host "copying ringtones..." +Get-ChildItem -Path $lrcTSPath -Include *.qm -Recurse | ForEach-Object { + write-host "copying translation file: " $_.FullName " => " $CopyDir + Copy-Item -Path $_.FullName -Destination $CopyDir -Force –Recurse +} + +# client translations +$clientTSPath = "$ClientDir\translations" +Get-ChildItem -Path $clientTSPath -Include *.ts -Recurse | ForEach-Object { + & $lrelease $_.FullName +} +$CopyDir = $OutDir + "\share\ring\translations" +New-Item -ItemType directory -Path $CopyDir -Force +write-host "copying ringtones..." +Get-ChildItem -Path $lrcTSPath -Include *.qm -Recurse | ForEach-Object { + write-host "copying translation file: " $_.FullName " => " $CopyDir + Copy-Item -Path $_.FullName -Destination $CopyDir -Force –Recurse +} + +write-host "copy completed" -NoNewline \ No newline at end of file diff --git a/ring-client-windows.vcxproj b/ring-client-windows.vcxproj index 6019a7f479dda3b86cf1fa1ba23213c0b3057682..8d2867b525d5d53d42820b0e5b84a7831ae0dfa3 100644 --- a/ring-client-windows.vcxproj +++ b/ring-client-windows.vcxproj @@ -92,7 +92,7 @@ <FunctionLevelLinking>true</FunctionLevelLinking> </ClCompile> <Link> - <AdditionalDependencies>dring.lib;qtwrapper.lib;ringclient_static.lib;WinSparkle.lib;qrcodelib.lib;shell32.lib;Ole32.lib;Advapi32.lib;Shlwapi.lib;User32.lib;Gdi32.lib;Crypt32.lib;Strmiids.lib;qtmain.lib;Qt5Svg.lib;Qt5Widgets.lib;Qt5WinExtras.lib;Qt5Gui.lib;Qt5Xml.lib;Qt5Network.lib;Qt5Core.lib;$(QTDIR)\lib\Qt5Sql.lib;$(QTDIR)\lib\Qt5WebEngineWidgets.lib;$(QTDIR)\lib\Qt5WebChannel.lib;%(AdditionalDependencies)</AdditionalDependencies> + <AdditionalDependencies>dring.lib;qtwrapper.lib;ringclient_static.lib;WinSparkle.lib;qrcodelib.lib;shell32.lib;Ole32.lib;Advapi32.lib;Shlwapi.lib;User32.lib;Gdi32.lib;Crypt32.lib;Strmiids.lib;qtmain.lib;Qt5Svg.lib;Qt5Widgets.lib;Qt5WinExtras.lib;Qt5Gui.lib;Qt5Xml.lib;Qt5Network.lib;Qt5Core.lib;Qt5Sql.lib;Qt5WebEngineWidgets.lib;Qt5WebChannel.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalLibraryDirectories>$(QTDIR)\lib;..\ring-daemon\contrib\msvc\lib\x64;..\daemon\contrib\msvc\lib\x64;..\ring-daemon\MSVC\x64\ReleaseLib_win32\bin;..\daemon\MSVC\x64\ReleaseLib_win32\bin;..\ring-lrc\msvc\release;..\lrc\msvc\release;..\ring-lrc\msvc\src\qtwrapper\Release;..\lrc\msvc\src\qtwrapper\Release;.\winsparkle\x64\release;.\qrencode-win32\qrencode-win32\vc8\qrcodelib\x64\Release-Lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" /ignore:4006,4049,4078,4098 /LTCG /NODEFAULTLIB:LIBCMT %(AdditionalOptions)</AdditionalOptions> <DataExecutionPrevention>true</DataExecutionPrevention> diff --git a/ring.nsi b/ring.nsi index 692ef792ecaa81b18f3c84e0437c8a2244fba09d..a0d5861729557f29ac5e3f08f369af56c01cc3f9 100644 --- a/ring.nsi +++ b/ring.nsi @@ -141,6 +141,9 @@ section "install" # Files added here should be removed by the uninstaller (see section "uninstall") file "Ring.exe" file "ring.ico" + file "qtwebengine_resources.pak" + file "QtWebEngineProcess.exe" + file "icudtl.dat" file *.dll setOutPath $INSTDIR\platforms file platforms/*