我正在使用Azure DevOps发布管道来部署WPF应用程序。
在CI中,我有一个复制文件任务,目标是build.artifactstagingdirectory 在内容中,我包括: -src \ SolutionDirectory \ ProjectDirectory \ bin \ $(BuildConfiguration)** -src \ SolutionDirectory \ ProjectDirectory \ Release.nuspec -包\ squirrel.windows.1.8.0 **
在CD中,我有两个PowerShell脚本。一个用于打包操作,另一个用于发布
$exePath = "$(System.DefaultWorkingDirectory)/_ArtifactName/drop/src/SolutionDirectory/ProjectDirectory/bin/Release/Project.exe"
$version =$([System.Diagnostics.FileVersionInfo]::GetVersionInfo($exePath).FileVersion)
nuget pack .\Release.nuspec
-Version $version
-Properties Configuration=Release
-OutputDirectory .\bin\Release\
-BasePath .\bin\Release\
Set-Alias squirrel "$(System.DefaultWorkingDirectory)/_ArtifactName/drop/packages/squirrel.windows.1.**/tools/squirrel.exe"
$exePath = "$(System.DefaultWorkingDirectory)/_ArtifactName/drop/src/SolutionDirectory/ProjectDirectory/bin/Release/Project.exe"
$version =$([System.Diagnostics.FileVersionInfo]::GetVersionInfo($exePath).FileVersion )
squirrel --releasify "$(System.DefaultWorkingDirectory)/_ArtifactName/drop/src/SolutionDirectory/ProjectDirectory/bin/Release/Project.$version.nupkg" --no-msi --releaseDir $(DevDeployDir)
DevDeployDir是指向本地服务器部署目录的变量。
我只能发布.nupkg。 RELEASES和Setup.exe丢失了,我还试图在末尾添加Start-Sleep命令,因为我认为释放过程可能太早停止了。
这就像Azure DevOps上的powershell任务开始在后台运行Squirrel发布一样,但是由于松鼠是异步的(有人告诉我,看过一些代码似乎就是这样),所以它立即退出并只有一个**。nupkg。并创建一个**-full.nupkg。因此,我觉得它开始将包转换为松鼠版本,但在powershell命令退出后停止了。
当我通过服务器驱动器上的Powershell手动释放时不会发生这种情况我可以看到工作目录中的文件按以下顺序生成
**。nupkg **-full.nupkg 删除**。nupkg 创建安装程序,exe 可选的Setup.msi
如果有人需要更多信息,我将很高兴与您分享。有人知道这是否可以实现吗?
答案 0 :(得分:0)
@Mahdi Khalili
是的,它必须是语义版本,这不是在安装过程中,而是在发布过程中,因此松鼠日志在这里不起作用,我认为。
在发布过程中,我们只是使用了wait和直通参数到powershell包装器。此后一切正常。