使用GitHub Actions构建安装程序。

3

是否可以使用GitHub Actions自动构建安装程序?这是一个包含多个.NET项目和一个“Visual Studio Installer Project”(a.k.a. vdproj)的VSTO添加程序解决方案。我需要在提交到特定分支时构建安装程序项目。

2个回答

2

是的,这是可能的。

首先,请确保环境是Windows:

jobs:
    ....
    runs-on: windows-2022

要构建VSTO解决方案,首先需要导入pfx证书:

- name: Import certificate from the command-line
  shell: pwsh
  run: |
    $Secure_String_Pwd = ConvertTo-SecureString "<password>" -AsPlainText -Force
    Import-PfxCertificate -FilePath '${{github.workspace}}\<path>\project1_TemporaryKey.pfx' -CertStoreLocation Cert:\CurrentUser\My -Password $Secure_String_Pwd
    

然后使用msbuild构建VSTO:
- name: setup-msbuild
  uses: microsoft/setup-msbuild@v1.1.3

- name: Set VS.net environment
  run: cmd.exe /C CALL "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars32.bat"
- name: Build VSTO
  run: msbuild ${{github.workspace}}\yourproject.sln -t:rebuild /p:Platform="Any CPU" /p:Configuration="Release" /nologo /nr:false /p:VisualStudioVersion="17.0"

并构建Visual Studio安装程序项目:

- name: Setup VS Dev Environment
  uses: seanmiddleditch/gha-setup-vsdevenv@v4
- name: Build installer
  run: devenv.com ${{github.workspace}}\yourproject\yourproject.vdproj /build "Release|Any CPU"

0
如果您正在 VS2019 构建上运行此程序。
jobs:
  build:
    runs-on: windows-2019

你可能需要应用修复该错误的注册表修改

------ Starting pre-build validation for project 'YourInstaller' ------ 
ERROR: An error occurred while validating.  HRESULT = '8000000A'

感谢此链接Building VDProj提供的信息,我已将建议的Powershell脚本复制到Github操作中,以修复正在使用的Visual Studio版本的注册表。
该脚本只是在正确的位置为正在使用的Visual Studio版本添加了一个注册表项,并将注册表项EnableOutOfProcBuild设置为0。
  - name: DisableOutOfProc Fix
    run: |
      function Invoke-DisableOutOfProcBuild {
        param ();
        $visualStudioWherePath = ('{0}/Microsoft Visual Studio/Installer/vswhere.exe' -f ${Env:ProgramFiles(x86)});
        $visualStudioInstallationPath = & $visualStudioWherePath -latest -products 'Microsoft.VisualStudio.Product.Enterprise' -property 'installationPath';
        $currentWorkingDirectory = ('{0}/Common7/IDE/CommonExtensions/Microsoft/VSI/DisableOutOfProcBuild' -f $visualStudioInstallationPath);
        
        Set-Location -Path $currentWorkingDirectory;
        
        $disableOutOfProcBuildPath = ('{0}/DisableOutOfProcBuild.exe' -f $currentWorkingDirectory);
        
        & $disableOutOfProcBuildPath;
        
        return;
      }
      Invoke-DisableOutOfProcBuild
      

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接