Skip to content

Comments

Improve Windows deployment and CI process#184

Merged
corrados merged 4 commits intojamulussoftware:improve_win_cifrom
doloopuntil:improve_win_ci
May 27, 2020
Merged

Improve Windows deployment and CI process#184
corrados merged 4 commits intojamulussoftware:improve_win_cifrom
doloopuntil:improve_win_ci

Conversation

@doloopuntil
Copy link

Three main updates:

  • Windows deployment via Powershell script. The Powershell script provides the following improvements:

    • Automatic download of Jamulus dependencies (ASIOSDK, NSIS installer)
    • Automatic detection of Visual Studio/Build Tools installation (version 2017 and above)
    • Application packaging using Qt deployment tooling (windeployqt)
    • Easy execution from a standard Command Prompt as: powershell windows\deploy_windows.ps1 "<qt-install-path>"
  • Reworked NSIS installer script. The rework provides the following improvements:

    • Correct handling of 64bit and 32bit installations (registry keys, installation paths, disk space requirements)
    • Safer handling of installation path (only install into a new folder)
    • Update to Modern UI 2 installer experience
    • Support for internationalization (installer language selection and translations)
    • Fix broken detection of Jamulus already running
    • Automatic detection of target files and folders to install
  • Fixed Fix Travis deployment for Windows, update automation script to account for latest changes in installation UI.

Please test Travis deployment against main GitHub repo prior to merging

Daniel Masato added 4 commits May 8, 2020 12:37
The Powershell script provides the following improvements:
- Automatic download of Jamulus dependencies (ASIOSDK, NSIS installer)
- Automatic detection of Visual Studio/Build Tools installation (version 2017 and above)
- Application packaging using Qt deployment tooling (windeployqt)
- Easy execution from a standard Command Prompt as: powershell windows\deploy_windows.ps1 "<qt-install-path>"
The rework provides the following improvements:
- Correct handling of 64bit and 32bit installations (registry keys, installation paths, disk space requirements)
- Safer handling of installation path (only install into a new folder)
- Update to Modern UI 2 installer experience
- Support for internationalization (installer language selection and translations)
- Fix broken detection of Jamulus already running (see https://sourceforge.net/p/llcon/discussion/software/thread/f3174d7f6f/)
- Automatic detection of target files and folders to install
Update the Qt installer automation script to account for the latest changes in the installation process.
The Qt online installer now requires a valid Qt user account.
Also use the updated Windows deployment script.
@corrados
Copy link
Contributor

corrados commented May 9, 2020

Thank you for the new scripts.

Please test Travis deployment against main GitHub repo prior to merging

Travis is not so important. We can fix this later on the master if there are any problems with it.

version 2017 and above

I have VS2015 installed. What do I have to change to support this Visual Studio version?

Easy execution from a standard Command Prompt

I had to run "Set-ExecutionPolicy RemoteSigned", otherwise I got an error message. Is there a way to output a help text on the command line to give users a hint if they also run into the same problem?

powershell windows\deploy_windows.ps1 ""

Is the qt-install-path mandatory or optional?

@corrados
Copy link
Contributor

corrados commented May 9, 2020

I saw that you put the .xcf and .bmp in the windows directory. For the Mac installer the installer background image is in src/res. What is your opinion, should we put OS specific resources in the windows/mac/linux directory instead of the src/res? Previously there was the mainicon.ico already in the windows directory which is also a resource file. Maybe we should move the Mac installer background image then also in the mac directory instead of the src/res directory.

@doloopuntil
Copy link
Author

Travis is not so important. We can fix this later on the master if there are any problems with it.

I saw the Travis build is failing but I think I know why -- there are encrypted credentials (via Travis) that I believe must be associated to your repository so I cannot fix that myself but I can send you instructions on how to do it.

I have VS2015 installed. What do I have to change to support this Visual Studio version?

Then it may not work. I use VSSetup to detect Visual Studio automatically and the earliest supported version seems to be VS 2017. I tried with 2017 and 2019 (both VS Community Edition and VS Build Tools) and both work. An option is to provide an additional (optional) argument to specify VS's installation path.

I had to run "Set-ExecutionPolicy RemoteSigned", otherwise I got an error message. Is there a way to output a help text on the command line to give users a hint if they also run into the same problem?

I'll check - I didn't have that issue except on Travis.

Is the qt-install-path mandatory or optional?

It's optional and set to C:\Qt\5.12.3 if unspecified (the version installed by the Travis script). It must match the version installed on the system (same as the QT_xxx env variables in the original batch script).

I saw that you put the .xcf and .bmp in the windows directory. For the Mac installer the installer background image is in src/res. What is your opinion, should we put OS specific resources in the windows/mac/linux directory instead of the src/res? Previously there was the mainicon.ico already in the windows directory which is also a resource file. Maybe we should move the Mac installer background image then also in the mac directory instead of the src/res directory.

I would agree to have OS-specific resources (maybe in a res folder?) in the OS-specific folder. Happy to move Mac resources in a separate commit.

@corrados
Copy link
Contributor

there are encrypted credentials (via Travis) that I believe must be associated to your repository

Yes, this is correct. I already have it connected to Travis: https://travis-ci.org/github/corrados/jamulus

It's optional and set to C:\Qt\5.12.3 if unspecified

Instead of a hard-coded default, could you check in the QT_xxx env variable if it is set, then use that value?

An option is to provide an additional (optional) argument to specify VS's installation path.

It seems I will need such a thing.

I tried to run the script. Here is what I got:

.\deploy_windows.ps1 C:\Qt\5.10.1

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----       10.05.2020     09:45                build
d-----       10.05.2020     09:45                deploy

FastPackageReference : https://onegetcdn.azureedge.net/providers/nuget-2.8.5.208.package.swidtag
ProviderName         : Bootstrap
Source               : https://onegetcdn.azureedge.net/providers/nuget-2.8.5.208.package.swidtag
Status               : Installed
SearchKey            : https://onegetcdn.azureedge.net/providers/nuget-2.8.5.208.package.swidtag
FullPath             :
PackageFilename      : Microsoft.PackageManagement.NuGetProvider.dll
FromTrustedSource    : False
Summary              : NuGet provider for the OneGet meta-package manager
SwidTags             : {nuget}
CanonicalId          : bootstrap:nuget/2.8.5.208#https://onegetcdn.azureedge.net/providers/nuget-2.8.5.208.package.swidtag
Metadata             : {summary,providerName,providerVersion,summary}
SwidTagText          : <?xml version="1.0" encoding="utf-16" standalone="yes"?>
                       <SoftwareIdentity
                         name="nuget"
                         version="2.8.5.208"
                         versionScheme="multipartnumeric" xmlns="http://standards.iso.org/iso/19770/-2/2015/schema.xsd">
                         <Meta
                           summary="NuGet provider for the OneGet meta-package manager" />
                         <Meta
                           providerName="nuget"
                           providerVersion="2.8.5.208"
                           summary="NuGet provider for the OneGet meta-package manager" />
                         <Link
                           href="https://onegetcdn.azureedge.net/providers/Microsoft.PackageManagement.NuGetProvider-2.8.5.208.dll"
                           rel="installationmedia"
                           type="application/octet-stream"
                           media="(OS:windows)" />
                       </SoftwareIdentity>
Dependencies         : {}
IsCorpus             :
Name                 : nuget
Version              : 2.8.5.208
VersionScheme        : multipartnumeric
TagVersion           :
TagId                :
IsPatch              :
IsSupplemental       :
AppliesToMedia       :
Meta                 : {{summary}, {providerName,providerVersion,summary}}
Links                : {installationmedia:https://onegetcdn.azureedge.net/providers/Microsoft.PackageManagement.NuGetProvider-2.8.5.208.dll}
Entities             : {}
Payload              :
Evidence             :
Culture              :
Attributes           : {name,version,versionScheme}

Move-Item : Ein Teil des Pfads konnte nicht gefunden werden.
In C:\Users\corrados\Documents\TMP\jamulus\windows\deploy_windows.ps1:58 Zeichen:5
+     Move-Item -Path "$Env:TEMP\$Name" -Destination "$WindowsPath\$Des ...
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : WriteError: (C:\Users\corrad...mp\ASIOSDK2.3.2:DirectoryInfo) [Move-Item], DirectoryNotFoundException
    + FullyQualifiedErrorId : MoveDirectoryItemIOError,Microsoft.PowerShell.Commands.MoveItemCommand

@corrados
Copy link
Contributor

Any updates? Do you want me to provide you with more information?

@corrados corrados mentioned this pull request May 24, 2020
@corrados corrados changed the base branch from master to improve_win_ci May 27, 2020 15:00
@corrados
Copy link
Contributor

I now merge your pull request to a branch on the main git repo, intended for me to do some testing.

@corrados corrados merged commit 7536975 into jamulussoftware:improve_win_ci May 27, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants