Skip to content

Create 32 bit and 64 bit Installers #77

Create 32 bit and 64 bit Installers

Create 32 bit and 64 bit Installers #77

name: Create 32 bit and 64 bit Installers
on:
workflow_dispatch:
inputs:
major_version:
description: 'Major Version'
required: true
minor_version:
description: 'Minor Version'
required: true
revision_no:
description: 'Revision'
required: true
jobs:
build:
# running on 2019 so that .NET version 4.5 and lower can be used
runs-on: windows-2019
# set variables
env:
Solution_Name: Instat.sln
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}
# check out r-instat
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
# Add MSBuild to the PATH: https://github.com/microsoft/setup-msbuild
- name: Setup MSBuild.exe
uses: microsoft/setup-msbuild@v1.1.3
# set up and restore NuGet packages
- name: Setup NuGet
uses: NuGet/setup-nuget@v1.1.1
- name: Restore NuGet
run: nuget restore $env:Solution_Name
# Restore the application to populate the obj folder with RuntimeIdentifiers
- name: Restore the application
run: msbuild $env:Solution_Name /t:Restore /p:Configuration=Release
# increment build number
- name: Generate build number
uses: einaregilsson/build-number@v3
with:
token: ${{secrets.github_token}}
#update version numbers in assembley
- name: set-version-assemblyinfo
uses: dannevesdantas/set-version-assemblyinfo@v.1.0.0
with:
# Folder location to search for AssemblyInfo.cs/.vb files
path: instat\My Project\AssemblyInfo.vb
# optional, default is ${{ github.workspace }}
# Version number to set on [AssemblyVersion] and [AssemblyFileVersion] attributes of AssemblyInfo.cs/.vb files
version: "${{ inputs.major_version }}.${{ inputs.minor_version }}.${{ inputs.revision_no }}.${env:BUILD_NUMBER}"
# Create the app package by building and packaging the Windows Application Packaging project
# 32 bit
- name: Create the app package 32bit
run: msbuild $env:Solution_Name /p:Configuration=Release /p:Platform=x86 /p:UapAppxPackageBuildMode=$env:Appx_Package_Build_Mode /p:AppxBundle=$env:Appx_Bundle /p:PackageCertificateKeyFile=GitHubActionsWorkflow.pfx /p:PackageCertificatePassword=${{ secrets.Pfx_Key }}
env:
Appx_Bundle: Always
Appx_Package_Build_Mode: StoreUpload
Configuration: ${{ matrix.configuration }}
# Create the app package by building and packaging the Windows Application Packaging project
# 64bit
- name: Create the app package 64 bit
run: msbuild $env:Solution_Name /p:Configuration=Release /p:Platform=x64 /p:UapAppxPackageBuildMode=$env:Appx_Package_Build_Mode /p:AppxBundle=$env:Appx_Bundle /p:PackageCertificateKeyFile=GitHubActionsWorkflow.pfx /p:PackageCertificatePassword=${{ secrets.Pfx_Key }}
env:
Appx_Bundle: Always
Appx_Package_Build_Mode: StoreUpload
Configuration: ${{ matrix.configuration }}
# Build 32 bit installer without R
- name: Building the installer 32bit - No R
run: |
"%programfiles(x86)%\Inno Setup 6\iscc.exe" "inno_install_script_32bit.iss"
shell: cmd
# upload 32 bit installer without R
- name: Upload the 32 bit installer as an artifact
uses: actions/upload-artifact@v4
if: ${{ github.event_name != 'pull_request' }}
with:
path: "Output/"
name: rinstat32NoR
- name: Remove 32 bit without R installer
run: |
del "Output/*"
# Build 64 bit installer without R
- name: Building the installer 64bit - No R
run: |
"%programfiles(x86)%\Inno Setup 6\iscc.exe" "inno_install_script_64bit.iss"
shell: cmd
# Upload 64 bit installer without R
- name: Upload the 64 bit installer as an artifact
uses: actions/upload-artifact@v4
if: ${{ github.event_name != 'pull_request' }}
with:
path: "Output/"
name: rinstat64NoR
- name: Remove 64 bit without R installer
run: |
del "Output/*"
# check out R-Instat Data
- name: Checkout Instat Data
uses: actions/checkout@v3
with:
repository: ' africanmathsinitiative/R-Instat-Data'
fetch-depth: 0
path: 'InstatData'
# Create directory and copy over InstatData (64bit)
- name: Make Library directory 64 bit
run: |
MKDIR instat\bin\x64\Release\static\Library\
- name: Copy R-Instat Data 64 bit
run: |
ROBOCOPY InstatData\data\ instat\bin\x64\Release\static\Library\ /E
continue-on-error: true
# Create directory and copy over InstatData (32bit)
- name: Make Library directory 32 bit
run: |
MKDIR instat\bin\Release\static\Library\
- name: Copy R-Instat Data 32 bit
run: |
ROBOCOPY InstatData\data\*.* instat\bin\Release\static\Library\ /E
continue-on-error: true
# check out R for R-Instat
- name: Checkout R for R-Instat
uses: actions/checkout@v3
with:
repository: 'ChrisMarsh82/R-RInstat'
fetch-depth: 0
path: 'R-RInstat'
- name: Copy R 64 bit
run: |
ROBOCOPY R-RInstat\64Bit\ instat\bin\x64\Release\static\ /E
continue-on-error: true
- name: Copy R 32 bit
run: |
ROBOCOPY R-RInstat\32Bit\ instat\bin\Release\static\ /E
continue-on-error: true
- name: Set R-tools
uses: r-windows/install-rtools@master
- name: Install R packages (64 bit)
run: |
"instat\bin\x64\Release\static\R\bin\Rscript.exe" "instat\static\InstatObject\R\InstallPackages.R"
shell: cmd
- name: Building the installer 64bit - With R
run: |
"%programfiles(x86)%\Inno Setup 6\iscc.exe" "inno_install_script_64bit.iss"
shell: cmd
- name: Upload the 64 bit installer with R as an artifact
uses: actions/upload-artifact@v4
if: ${{ github.event_name != 'pull_request' }}
with:
path: "Output/"
name: rinstat64WithR-innosetup
- name: Remove 64 bit release files to free up space
run: |
Remove-Item "instat\bin\x64\Release\" -Recurse
- name: Remove 64 bit with R installer
run: |
del "Output/*"
- name: Install R packages (32 bit)
run: |
"instat\bin\Release\static\R\bin\Rscript.exe" "instat\static\InstatObject\R\InstallPackages.R"
shell: cmd
- name: Building the installer 32bit - With R
run: |
"%programfiles(x86)%\Inno Setup 6\iscc.exe" "inno_install_script_32bit.iss"
shell: cmd
- name: Upload the 32 bit installer with R as an artifact
uses: actions/upload-artifact@v4
if: ${{ github.event_name != 'pull_request' }}
with:
path: "Output/"
name: rinstat32WithR-innosetup