Browse Source

Merge pull request #60 from PixiEditor/cd-azure-pipelines

Cd azure pipelines
Krzysztof Krysiński 4 years ago
parent
commit
cfdb67862e

+ 2 - 0
.gitignore

@@ -330,3 +330,5 @@ ASALocalRun/
 .mfractor/
 .mfractor/
 
 
 PixiEditor/Properties/
 PixiEditor/Properties/
+
+.vscode/

+ 7 - 7
Installer/installer-setup-x64-light.iss

@@ -2,7 +2,7 @@
 ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
 ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
 
 
 #define MyAppName "PixiEditor"
 #define MyAppName "PixiEditor"
-#define MyAppVersion GetFileVersion("E:\Builds\PixiEditor\x64\PixiEditor.exe")     ;Not perfect solution, it's enviroment dependend
+#define MyAppVersion GetFileVersion("..\Builds\PixiEditor-x64-light\PixiEditor\PixiEditor.exe")     ;Not perfect solution, it's enviroment dependend
 #define MyAppPublisher "PixiEditor"
 #define MyAppPublisher "PixiEditor"
 #define MyAppURL "https://github.com/PixiEditor/PixiEditor"
 #define MyAppURL "https://github.com/PixiEditor/PixiEditor"
 #define MyAppExeName "PixiEditor.exe"
 #define MyAppExeName "PixiEditor.exe"
@@ -24,12 +24,12 @@ DefaultDirName={autopf}\{#MyAppName}
 DisableProgramGroupPage=yes
 DisableProgramGroupPage=yes
 ; The [Icons] "quicklaunchicon" entry uses {userappdata} but its [Tasks] entry has a proper IsAdminInstallMode Check.
 ; The [Icons] "quicklaunchicon" entry uses {userappdata} but its [Tasks] entry has a proper IsAdminInstallMode Check.
 UsedUserAreasWarning=no
 UsedUserAreasWarning=no
-LicenseFile=E:\Git\PixiEditor\LICENSE
+LicenseFile=..\LICENSE
 ; Uncomment the following line to run in non administrative install mode (install for current user only.)
 ; Uncomment the following line to run in non administrative install mode (install for current user only.)
 ;PrivilegesRequired=lowest
 ;PrivilegesRequired=lowest
-OutputDir=E:\Builds\PixiEditor
-OutputBaseFilename=PixiEditor-setup-{#TargetPlatform}
-SetupIconFile=E:\Git\PixiEditor\icon.ico
+OutputDir=Assets\PixiEditor-{#TargetPlatform}
+OutputBaseFilename=PixiEditor-{#MyAppVersion}-setup-{#TargetPlatform}
+SetupIconFile=..\icon.ico
 Compression=lzma
 Compression=lzma
 SolidCompression=yes
 SolidCompression=yes
 WizardStyle=modern
 WizardStyle=modern
@@ -43,8 +43,8 @@ Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{
 Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked; OnlyBelowVersion: 6.1; Check: not IsAdminInstallMode
 Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked; OnlyBelowVersion: 6.1; Check: not IsAdminInstallMode
 
 
 [Files]
 [Files]
-Source: "E:\Builds\PixiEditor\{#TargetPlatform}\PixiEditor.exe"; DestDir: "{app}"; Flags: ignoreversion
-Source: "E:\Builds\PixiEditor\{#TargetPlatform}\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
+Source: "..\Builds\PixiEditor-{#TargetPlatform}\PixiEditor\PixiEditor.exe"; DestDir: "{app}"; Flags: ignoreversion
+Source: "..\Builds\PixiEditor-{#TargetPlatform}\PixiEditor\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
 ; NOTE: Don't use "Flags: ignoreversion" on any shared system files
 ; NOTE: Don't use "Flags: ignoreversion" on any shared system files
 
 
 [Icons]
 [Icons]

+ 7 - 7
Installer/installer-setup-x64.iss

@@ -2,7 +2,7 @@
 ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
 ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
 
 
 #define MyAppName "PixiEditor"
 #define MyAppName "PixiEditor"
-#define MyAppVersion GetFileVersion("E:\Builds\PixiEditor\x64\PixiEditor.exe")     ;Not perfect solution, it's enviroment dependend
+#define MyAppVersion GetFileVersion("..\Builds\PixiEditor-x64\PixiEditor\PixiEditor.exe")     ;Not perfect solution, it's enviroment dependend
 #define MyAppPublisher "PixiEditor"
 #define MyAppPublisher "PixiEditor"
 #define MyAppURL "https://github.com/PixiEditor/PixiEditor"
 #define MyAppURL "https://github.com/PixiEditor/PixiEditor"
 #define MyAppExeName "PixiEditor.exe"
 #define MyAppExeName "PixiEditor.exe"
@@ -24,12 +24,12 @@ DefaultDirName={autopf}\{#MyAppName}
 DisableProgramGroupPage=yes
 DisableProgramGroupPage=yes
 ; The [Icons] "quicklaunchicon" entry uses {userappdata} but its [Tasks] entry has a proper IsAdminInstallMode Check.
 ; The [Icons] "quicklaunchicon" entry uses {userappdata} but its [Tasks] entry has a proper IsAdminInstallMode Check.
 UsedUserAreasWarning=no
 UsedUserAreasWarning=no
-LicenseFile=E:\Git\PixiEditor\LICENSE
+LicenseFile=..\LICENSE
 ; Uncomment the following line to run in non administrative install mode (install for current user only.)
 ; Uncomment the following line to run in non administrative install mode (install for current user only.)
 ;PrivilegesRequired=lowest
 ;PrivilegesRequired=lowest
-OutputDir=E:\Builds\PixiEditor
-OutputBaseFilename=PixiEditor-setup-{#TargetPlatform}
-SetupIconFile=E:\Git\PixiEditor\icon.ico
+OutputDir=Assets\PixiEditor-{#TargetPlatform}
+OutputBaseFilename=PixiEditor-{#MyAppVersion}-setup-{#TargetPlatform}
+SetupIconFile=..\icon.ico
 Compression=lzma
 Compression=lzma
 SolidCompression=yes
 SolidCompression=yes
 WizardStyle=modern
 WizardStyle=modern
@@ -43,8 +43,8 @@ Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{
 Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked; OnlyBelowVersion: 6.1; Check: not IsAdminInstallMode
 Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked; OnlyBelowVersion: 6.1; Check: not IsAdminInstallMode
 
 
 [Files]
 [Files]
-Source: "E:\Builds\PixiEditor\{#TargetPlatform}\PixiEditor.exe"; DestDir: "{app}"; Flags: ignoreversion
-Source: "E:\Builds\PixiEditor\{#TargetPlatform}\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
+Source: "..\Builds\PixiEditor-{#TargetPlatform}\PixiEditor\PixiEditor.exe"; DestDir: "{app}"; Flags: ignoreversion
+Source: "..\Builds\PixiEditor-{#TargetPlatform}\PixiEditor\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
 ; NOTE: Don't use "Flags: ignoreversion" on any shared system files
 ; NOTE: Don't use "Flags: ignoreversion" on any shared system files
 
 
 [Icons]
 [Icons]

+ 8 - 8
Installer/installer-setup-x32.iss → Installer/installer-setup-x86-light.iss

@@ -2,11 +2,11 @@
 ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
 ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
 
 
 #define MyAppName "PixiEditor"
 #define MyAppName "PixiEditor"
-#define MyAppVersion GetFileVersion("E:\Builds\PixiEditor\x64\PixiEditor.exe")     ;Not perfect solution, it's enviroment dependend
+#define MyAppVersion GetFileVersion("..\Builds\PixiEditor-x86-light\PixiEditor\PixiEditor.exe")     ;Not perfect solution, it's enviroment dependend
 #define MyAppPublisher "PixiEditor"
 #define MyAppPublisher "PixiEditor"
 #define MyAppURL "https://github.com/PixiEditor/PixiEditor"
 #define MyAppURL "https://github.com/PixiEditor/PixiEditor"
 #define MyAppExeName "PixiEditor.exe"
 #define MyAppExeName "PixiEditor.exe"
-#define TargetPlatform "x32"
+#define TargetPlatform "x86-light"
 
 
 [Setup]
 [Setup]
 ; NOTE: The value of AppId uniquely identifies this application. Do not use the same AppId value in installers for other applications.
 ; NOTE: The value of AppId uniquely identifies this application. Do not use the same AppId value in installers for other applications.
@@ -24,12 +24,12 @@ DefaultDirName={autopf}\{#MyAppName}
 DisableProgramGroupPage=yes
 DisableProgramGroupPage=yes
 ; The [Icons] "quicklaunchicon" entry uses {userappdata} but its [Tasks] entry has a proper IsAdminInstallMode Check.
 ; The [Icons] "quicklaunchicon" entry uses {userappdata} but its [Tasks] entry has a proper IsAdminInstallMode Check.
 UsedUserAreasWarning=no
 UsedUserAreasWarning=no
-LicenseFile=E:\Git\PixiEditor\LICENSE
+LicenseFile=..\LICENSE
 ; Uncomment the following line to run in non administrative install mode (install for current user only.)
 ; Uncomment the following line to run in non administrative install mode (install for current user only.)
 ;PrivilegesRequired=lowest
 ;PrivilegesRequired=lowest
-OutputDir=E:\Builds\PixiEditor
-OutputBaseFilename=PixiEditor-setup-{#TargetPlatform}
-SetupIconFile=E:\Git\PixiEditor\icon.ico
+OutputDir=Assets\PixiEditor-{#TargetPlatform}
+OutputBaseFilename=PixiEditor-{#MyAppVersion}-setup-{#TargetPlatform}
+SetupIconFile=..\icon.ico
 Compression=lzma
 Compression=lzma
 SolidCompression=yes
 SolidCompression=yes
 WizardStyle=modern
 WizardStyle=modern
@@ -43,8 +43,8 @@ Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{
 Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked; OnlyBelowVersion: 6.1; Check: not IsAdminInstallMode
 Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked; OnlyBelowVersion: 6.1; Check: not IsAdminInstallMode
 
 
 [Files]
 [Files]
-Source: "E:\Builds\PixiEditor\{#TargetPlatform}\PixiEditor.exe"; DestDir: "{app}"; Flags: ignoreversion
-Source: "E:\Builds\PixiEditor\{#TargetPlatform}\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
+Source: "..\Builds\PixiEditor-{#TargetPlatform}\PixiEditor\PixiEditor.exe"; DestDir: "{app}"; Flags: ignoreversion
+Source: "..\Builds\PixiEditor-{#TargetPlatform}\PixiEditor\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
 ; NOTE: Don't use "Flags: ignoreversion" on any shared system files
 ; NOTE: Don't use "Flags: ignoreversion" on any shared system files
 
 
 [Icons]
 [Icons]

+ 8 - 8
Installer/installer-setup-x32-light.iss → Installer/installer-setup-x86.iss

@@ -2,11 +2,11 @@
 ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
 ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
 
 
 #define MyAppName "PixiEditor"
 #define MyAppName "PixiEditor"
-#define MyAppVersion GetFileVersion("E:\Builds\PixiEditor\x64\PixiEditor.exe")     ;Not perfect solution, it's enviroment dependend
+#define MyAppVersion GetFileVersion("..\Builds\PixiEditor-x86\PixiEditor\PixiEditor.exe")     ;Not perfect solution, it's enviroment dependend
 #define MyAppPublisher "PixiEditor"
 #define MyAppPublisher "PixiEditor"
 #define MyAppURL "https://github.com/PixiEditor/PixiEditor"
 #define MyAppURL "https://github.com/PixiEditor/PixiEditor"
 #define MyAppExeName "PixiEditor.exe"
 #define MyAppExeName "PixiEditor.exe"
-#define TargetPlatform "x32-light"
+#define TargetPlatform "x86"
 
 
 [Setup]
 [Setup]
 ; NOTE: The value of AppId uniquely identifies this application. Do not use the same AppId value in installers for other applications.
 ; NOTE: The value of AppId uniquely identifies this application. Do not use the same AppId value in installers for other applications.
@@ -24,12 +24,12 @@ DefaultDirName={autopf}\{#MyAppName}
 DisableProgramGroupPage=yes
 DisableProgramGroupPage=yes
 ; The [Icons] "quicklaunchicon" entry uses {userappdata} but its [Tasks] entry has a proper IsAdminInstallMode Check.
 ; The [Icons] "quicklaunchicon" entry uses {userappdata} but its [Tasks] entry has a proper IsAdminInstallMode Check.
 UsedUserAreasWarning=no
 UsedUserAreasWarning=no
-LicenseFile=E:\Git\PixiEditor\LICENSE
+LicenseFile=..\LICENSE
 ; Uncomment the following line to run in non administrative install mode (install for current user only.)
 ; Uncomment the following line to run in non administrative install mode (install for current user only.)
 ;PrivilegesRequired=lowest
 ;PrivilegesRequired=lowest
-OutputDir=E:\Builds\PixiEditor
-OutputBaseFilename=PixiEditor-setup-{#TargetPlatform}
-SetupIconFile=E:\Git\PixiEditor\icon.ico
+OutputDir=Assets\PixiEditor-{#TargetPlatform}
+OutputBaseFilename=PixiEditor-{#MyAppVersion}-setup-{#TargetPlatform}
+SetupIconFile=..\icon.ico
 Compression=lzma
 Compression=lzma
 SolidCompression=yes
 SolidCompression=yes
 WizardStyle=modern
 WizardStyle=modern
@@ -43,8 +43,8 @@ Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{
 Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked; OnlyBelowVersion: 6.1; Check: not IsAdminInstallMode
 Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked; OnlyBelowVersion: 6.1; Check: not IsAdminInstallMode
 
 
 [Files]
 [Files]
-Source: "E:\Builds\PixiEditor\{#TargetPlatform}\PixiEditor.exe"; DestDir: "{app}"; Flags: ignoreversion
-Source: "E:\Builds\PixiEditor\{#TargetPlatform}\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
+Source: "..\Builds\PixiEditor-{#TargetPlatform}\PixiEditor\PixiEditor.exe"; DestDir: "{app}"; Flags: ignoreversion
+Source: "..\Builds\PixiEditor-{#TargetPlatform}\PixiEditor\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
 ; NOTE: Don't use "Flags: ignoreversion" on any shared system files
 ; NOTE: Don't use "Flags: ignoreversion" on any shared system files
 
 
 [Icons]
 [Icons]

+ 4 - 0
PixiEditor.UpdateInstaller/PixiEditor.UpdateInstaller.csproj

@@ -10,6 +10,10 @@
     <None Remove="Images\PixiEditorLogo.png" />
     <None Remove="Images\PixiEditorLogo.png" />
   </ItemGroup>
   </ItemGroup>
 
 
+  <ItemGroup>
+    <PackageReference Include="Tools.InnoSetup" Version="6.0.5" />
+  </ItemGroup>
+
   <ItemGroup>
   <ItemGroup>
     <ProjectReference Include="..\PixiEditor.UpdateModule\PixiEditor.UpdateModule.csproj" />
     <ProjectReference Include="..\PixiEditor.UpdateModule\PixiEditor.UpdateModule.csproj" />
   </ItemGroup>
   </ItemGroup>

+ 1 - 1
PixiEditor.UpdateModule/UpdateDownloader.cs

@@ -30,7 +30,7 @@ namespace PixiEditor.UpdateModule
 
 
         private static Asset GetMatchingAsset(ReleaseInfo release)
         private static Asset GetMatchingAsset(ReleaseInfo release)
         {
         {
-            string arch = IntPtr.Size == 8 ? "x64" : "x32";
+            string arch = IntPtr.Size == 8 ? "x64" : "x86";
             return release.Assets.First(x => x.ContentType == "application/x-zip-compressed"
             return release.Assets.First(x => x.ContentType == "application/x-zip-compressed"
             && x.Name.Contains(arch));
             && x.Name.Contains(arch));
         }
         }

+ 6 - 0
assemblyVerReader.ps1

@@ -0,0 +1,6 @@
+$assemblyInfoPath = "PixiEditor\Properties\AssemblyInfo.cs"
+
+$contents = [System.IO.File]::ReadAllText($assemblyInfoPath)
+
+$versionString = [RegEx]::Match($contents,"(?:\d+\.\d+\.\d+\.\d+)")
+Write-Host "##vso[task.setvariable variable=TagVersion;]$versionString"

+ 118 - 0
windows-x64-release.yml

@@ -0,0 +1,118 @@
+# .NET Desktop
+# Build and run tests for .NET Desktop or Windows classic desktop solutions.
+# Add steps that publish symbols, save build artifacts, and more:
+# https://docs.microsoft.com/azure/devops/pipelines/apps/windows/dot-net
+
+trigger:
+- release
+- cd-azure-pipelines
+
+pool:
+  vmImage: 'windows-latest'
+
+variables:
+  solution: '**/*.sln'
+  buildPlatform: 'Any CPU'
+  buildConfiguration: 'Release'
+
+steps:
+- task: NuGetToolInstaller@1
+
+- task: NuGetCommand@2
+  inputs:
+    restoreSolution: '$(solution)'
+
+- task: VSBuild@1
+  inputs:
+    solution: '$(solution)'
+    platform: '$(buildPlatform)'
+    configuration: '$(buildConfiguration)'
+
+- task: DotNetCoreCLI@2
+  displayName: "Build release PixiEditor.UpdateInstaller"
+  inputs:
+    command: 'publish'
+    publishWebProjects: false
+    projects: '**/PixiEditor.UpdateInstaller.csproj'
+    arguments: '-o "UpdateInstaller" -r "win-x64" --self-contained=false -p:PublishSingleFile=true -c Release'
+    zipAfterPublish: false
+
+- task: PowerShell@2
+  displayName: "Set tag version"
+  inputs:
+    filePath: 'assemblyVerReader.ps1'
+
+- task: DotNetCoreCLI@2
+  displayName: "Build release PixiEditor Self-contained"
+  inputs:
+    command: 'publish'
+    publishWebProjects: false
+    projects: '**/PixiEditor.csproj'
+    arguments: '-o "Builds/PixiEditor-x64" --self-contained=true -r "win-x64" -c Release'
+    zipAfterPublish: false
+
+- task: CopyFiles@2
+  displayName: "Copy updater to PixiEditor target dir"
+  inputs:
+    SourceFolder: 'UpdateInstaller'
+    Contents: '**'
+    TargetFolder: 'Builds/PixiEditor-x64'
+    flattenFolders: true
+
+- task: PowerShell@2
+  displayName: "Compile installer"
+  inputs:
+    targetType: 'inline'
+    script: '& "$env:userprofile\.nuget\packages\tools.innosetup\6.0.5\tools\ISCC.exe" Installer\installer-setup-x64.iss'
+  
+- task: PublishPipelineArtifact@1
+  displayName: "Publish artifact"
+  inputs:
+    targetPath: 'Installer/Assets/PixiEditor-x64/'
+    artifact: 'PixiEditor-setup-x64.exe'
+    publishLocation: 'pipeline'
+
+- task: DotNetCoreCLI@2
+  displayName: "Build release PixiEditor x64 light"
+  inputs:
+    command: 'publish'
+    publishWebProjects: false
+    projects: '**/PixiEditor.csproj'
+    arguments: '-o "Builds\PixiEditor-x64-light" --self-contained=false -r "win-x64" -c Release'
+    zipAfterPublish: false
+    
+- task: ArchiveFiles@2
+  inputs:
+    rootFolderOrFile: 'Builds\PixiEditor-x64-light'
+    includeRootFolder: true
+    archiveType: 'zip'
+    archiveFile: 'PixiEditor.$(TagVersion).x64.zip'
+    replaceExistingArchive: true
+
+- task: PublishPipelineArtifact@1
+  displayName: "Publish zip artifact"
+  inputs:
+    targetPath: '$(System.DefaultWorkingDirectory)\PixiEditor.$(TagVersion).x64.zip'
+    artifact: 'PixiEditor.$(TagVersion).x64.zip'
+    publishLocation: 'pipeline'
+
+- task: CopyFiles@2
+  displayName: "Copy updater to PixiEditor target dir"
+  inputs:
+    SourceFolder: 'UpdateInstaller'
+    Contents: '**'
+    TargetFolder: 'Builds/PixiEditor-x64-light'
+    flattenFolders: true
+
+- task: PowerShell@2
+  displayName: "Compile installer"
+  inputs:
+    targetType: 'inline'
+    script: '& "$env:userprofile\.nuget\packages\tools.innosetup\6.0.5\tools\ISCC.exe" Installer\installer-setup-x64-light.iss'
+
+- task: PublishPipelineArtifact@1
+  displayName: "Publish artifact"
+  inputs:
+    targetPath: 'Installer/Assets/PixiEditor-x64-light/'
+    artifact: 'PixiEditor-setup-x64-light.exe'
+    publishLocation: 'pipeline'

+ 118 - 0
windows-x86-release.yml

@@ -0,0 +1,118 @@
+# .NET Desktop
+# Build and run tests for .NET Desktop or Windows classic desktop solutions.
+# Add steps that publish symbols, save build artifacts, and more:
+# https://docs.microsoft.com/azure/devops/pipelines/apps/windows/dot-net
+
+trigger:
+- release
+- cd-azure-pipelines
+
+pool:
+  vmImage: 'windows-latest'
+
+variables:
+  solution: '**/*.sln'
+  buildPlatform: 'Any CPU'
+  buildConfiguration: 'Release'
+
+steps:
+- task: NuGetToolInstaller@1
+
+- task: NuGetCommand@2
+  inputs:
+    restoreSolution: '$(solution)'
+
+- task: VSBuild@1
+  inputs:
+    solution: '$(solution)'
+    platform: '$(buildPlatform)'
+    configuration: '$(buildConfiguration)'
+
+- task: PowerShell@2
+  displayName: "Set tag version"
+  inputs:
+    filePath: 'assemblyVerReader.ps1'
+
+- task: DotNetCoreCLI@2
+  displayName: "Build release PixiEditor.UpdateInstaller"
+  inputs:
+    command: 'publish'
+    publishWebProjects: false
+    projects: '**/PixiEditor.UpdateInstaller.csproj'
+    arguments: '-o "UpdateInstaller" -r "win-x86" --self-contained=false -p:PublishSingleFile=true -c Release'
+    zipAfterPublish: false
+
+- task: DotNetCoreCLI@2
+  displayName: "Build release PixiEditor Self-contained"
+  inputs:
+    command: 'publish'
+    publishWebProjects: false
+    projects: '**/PixiEditor.csproj'
+    arguments: '-o "Builds/PixiEditor-x86" --self-contained=true -r "win-x86" -c Release'
+    zipAfterPublish: false
+
+- task: CopyFiles@2
+  displayName: "Copy updater to PixiEditor target dir"
+  inputs:
+    SourceFolder: 'UpdateInstaller'
+    Contents: '**'
+    TargetFolder: 'Builds/PixiEditor-x86'
+    flattenFolders: true
+
+- task: PowerShell@2
+  displayName: "Compile installer"
+  inputs:
+    targetType: 'inline'
+    script: '& "$env:userprofile\.nuget\packages\tools.innosetup\6.0.5\tools\ISCC.exe" Installer\installer-setup-x86.iss'
+  
+- task: PublishPipelineArtifact@1
+  displayName: "Publish artifact"
+  inputs:
+    targetPath: 'Installer/Assets/PixiEditor-x86/'
+    artifact: 'PixiEditor-setup-x86.exe'
+    publishLocation: 'pipeline'
+
+- task: DotNetCoreCLI@2
+  displayName: "Build release PixiEditor x86 light"
+  inputs:
+    command: 'publish'
+    publishWebProjects: false
+    projects: '**/PixiEditor.csproj'
+    arguments: '-o "Builds\PixiEditor-x86-light" --self-contained=false -r "win-x86" -c Release'
+    zipAfterPublish: false
+
+- task: ArchiveFiles@2
+  inputs:
+    rootFolderOrFile: 'Builds\PixiEditor-x86-light'
+    includeRootFolder: true
+    archiveType: 'zip'
+    archiveFile: 'PixiEditor.$(TagVersion).x86.zip'
+    replaceExistingArchive: true
+
+- task: PublishPipelineArtifact@1
+  displayName: "Publish zip artifact"
+  inputs:
+    targetPath: '$(System.DefaultWorkingDirectory)\PixiEditor.$(TagVersion).x86.zip'
+    artifact: 'PixiEditor.$(TagVersion).x86.zip'
+    publishLocation: 'pipeline'
+
+- task: CopyFiles@2
+  displayName: "Copy updater to PixiEditor target dir"
+  inputs:
+    SourceFolder: 'UpdateInstaller'
+    Contents: '**'
+    TargetFolder: 'Builds/PixiEditor-x86-light'
+    flattenFolders: true
+
+- task: PowerShell@2
+  displayName: "Compile installer"
+  inputs:
+    targetType: 'inline'
+    script: '& "$env:userprofile\.nuget\packages\tools.innosetup\6.0.5\tools\ISCC.exe" Installer\installer-setup-x86-light.iss'
+
+- task: PublishPipelineArtifact@1
+  displayName: "Publish artifact"
+  inputs:
+    targetPath: 'Installer/Assets/PixiEditor-x86-light/'
+    artifact: 'PixiEditor-setup-x86-light.exe'
+    publishLocation: 'pipeline'