【问题标题】:How to create a working VHDX in Azure CI Build Pipeline?如何在 Azure CI Build Pipeline 中创建有效的 VHDX?
【发布时间】:2021-08-28 18:56:53
【问题描述】:

此问题与Azure MSIX Build and Package task only has Release and Debug configurations有关

我们有一个带有 MSIX 安装程序的 WinForms 项目。手动,我们可以成功创建

  1. 一个 MSIXBUNDLE 并将其部署到 Kudu
  2. 一个 MSIX 并通过 VHDX 将其部署到 Azure VM。我们首先手动将 MSIX 转换为 VHDX

我们现在正在尝试自动化构建和发布过程以创建 VHDX。但是,当使用我们已经验证过的过程安装 VHDX 时,我们会得到一个空白屏幕。唯一不同的是构建方法(即 MSBuild 与 VS Publish)。

我们如何在 Azure CI 构建管道中创建工作 VHDX?

下面是 YAML。

pool: 
  vmImage: windows-2019
  
variables:
- name: solution
  value: 'ProjectName.sln'
- name: buildPlatform
  value: 'x64'
- name: buildConfiguration
  value: 'development'
- name: major
  value: 1
- name: minor
  value: 0
- name: build
  value: 0
- name: revision
  value: $[counter('rev', 0)]  
- name: vhdxSize
  value: '200'
- group: 'legacy-pipeline'
- name: signingCertPwd
  value: $[variables.SigningCertPassword]
  
steps:
- powershell: |
     # Update appxmanifest. This must be done before the build.
     [xml]$manifest= get-content ".\ProjectName.MsixInstaller\Package.appxmanifest"
     $manifest.Package.Identity.Version = "$(major).$(minor).$(build).$(revision)"    
     $manifest.save("ProjectName.MsixInstaller/Package.appxmanifest")
  displayName: 'Version Package Manifest'
  
- task: NuGetToolInstaller@1
  inputs:
    versionSpec: '5.9.1'
    checkLatest: true
  
- task: NuGetCommand@2
  inputs:
    command: 'restore'
    restoreSolution: $(solution)
    feedsToUse: 'select'
  
- task: MSBuild@1
  inputs:
    solution: ProjectName.MsixInstaller/ProjectName.MsixInstaller.wapproj
    platform: $(buildPlatform)
    configuration: $(buildConfiguration)
    msbuildArguments: '/p:OutputPath=NonPackagedApp
     /p:UapAppxPackageBuildMode=SideLoadOnly  /p:AppxBundle=Never /p:AppxPackageOutput=$(Build.ArtifactStagingDirectory)\ProjectName.msix /p:AppxPackageSigningEnabled=false'
  displayName: 'Package the App'
  
- task: MsixSigning@1
  inputs:
    package: '$(Build.ArtifactStagingDirectory)\**\*.msix*'
    certificate: 'Accumatch.DeveloperCodeSigningCert_TemporaryKey.pfx'
    passwordVariable: signingCertPwd
  
- task: AppInstallerFile@1
  inputs:
    package: '$(Build.ArtifactStagingDirectory)\ProjectName.msix'
    outputPath: '$(Build.ArtifactStagingDirectory)\ProjectName.appinstaller'
    method: 'create'
    fileVersion: '1.0.0.0'
    uri: 'https://ProjectNamedemo.azurewebsites.net/ProjectName.appinstaller'
    mainItemUri: 'https://ProjectNamedemo.azurewebsites.net/ProjectName.msix'
    showPromptWhenUpdating: true
    updateBlocksActivation: true
  
- task: MsixAppAttach@1
  inputs:
    package: '$(Build.ArtifactStagingDirectory)\ProjectName.msix'
    vhdxOutputPath: '$(Build.ArtifactStagingDirectory)\ProjectName.vhdx'
    vhdxSize: $(vhdxSize)
  
- task: PublishBuildArtifacts@1
  inputs:
    PathtoPublish: '$(Build.ArtifactStagingDirectory)'
    ArtifactName: 'drop'
    publishLocation: 'Container'

【问题讨论】:

    标签: azure winforms azure-pipelines azure-pipelines-build-task msix


    【解决方案1】:

    实际上,YAML 并没有什么问题。问题是虚拟机加载 VHDX 的延迟。换句话说,在装载 VHDX 后等待大约 5 分钟,然后再尝试运行应用程序。我把这个留在这里,以防其他人遇到这个issue

    【讨论】:

      猜你喜欢
      • 2022-08-05
      • 2021-05-13
      • 1970-01-01
      • 2020-12-04
      • 1970-01-01
      • 2020-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多