Create Installers #13
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Create 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 | |
r-version: | |
description: 'Specify the R version to install' | |
required: true | |
default: '4.4.1' # Default version if the user does not specify | |
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 | |
# 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 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 | |
# Install R | |
- name: Set up R | |
uses: r-lib/actions/setup-r@v2 | |
with: | |
r-version: ${{ inputs.r-version }} | |
- name: Debug paths | |
run: | | |
$R_HOME=$(Rscript -e 'cat(R.home())') | |
echo "R_HOME path: $R_HOME" | |
echo "Source path: $(pwd)\installer\Rprofile.site" | |
- name: Update Rprofile.site | |
run: | | |
$R_HOME=$(Rscript -e 'cat(R.home())') | |
ROBOCOPY "${{ github.workspace }}\installer" "$R_HOME\etc" "Rprofile.site" /COPY:DAT | |
continue-on-error: true | |
- name: Copy R 64 bit | |
run: | | |
$R_HOME=$(Rscript -e 'cat(R.home())') | |
ROBOCOPY "$R_HOME" "${{ github.workspace }}\instat\bin\x64\Release\static" /E | |
continue-on-error: true | |
- name: Set R-tools | |
uses: r-windows/install-rtools@master | |
# Check if the directory exists | |
- name: Verify InstallPackages.R directory | |
run: | | |
if (Test-Path "D:\a\R-Instat\R-Instat\instat\static\InstatObject\R") { | |
Write-Host "Directory exists." | |
} else { | |
Write-Host "Directory does not exist." | |
} | |
# List the contents of the directory to check for the script | |
- name: List contents of InstatObject\R directory | |
run: | | |
Get-ChildItem "D:\a\R-Instat\R-Instat\instat\static\InstatObject\R" | |
# Check if the directory exists | |
- name: Verify script directory | |
run: | | |
if (Test-Path "D:\a\R-Instat\R-Instat\instat\bin\x64\Release\static\R\bin") { | |
Write-Host "Directory exists." | |
} else { | |
Write-Host "Directory does not exist." | |
} | |
# List the contents of the directory to check for the script | |
- name: List contents of R\bin directory | |
run: | | |
Get-ChildItem "D:\a\R-Instat\R-Instat\instat\bin\x64\Release\static\R\bin" | |
- name: Install R packages (64 bit) | |
run: | | |
"${{ github.workspace }}\instat\bin\x64\Release\static\R\bin\Rscript.exe" "${{ github.workspace }}\instat\static\InstatObject\R\InstallPackages.R" | |
shell: cmd | |
- name: Building the installer 64bit - With R | |
run: | | |
"%programfiles(x86)%\Inno Setup 6\iscc.exe" "${{ github.workspace }}\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 | |