Я использую конвейер выпуска Azure DevOps для развертывания приложения WPF.
В CI у меня есть задача копирования файлов с целью build.artifactstagingdirectory В содержание я включаю: - src \ SolutionDirectory \ ProjectDirectory \ bin \ $ (BuildConfiguration) ** - src \ SolutionDirectory \ ProjectDirectory \ Release.nuspec - пакеты \ squirrel.windows.1.8.0 **
На компакт-диске у меня есть два скрипта 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 в конце, потому что я думал, что процесс освобождения может останавливаться слишком рано.
Это похоже на то, что задача PowerShell в Azure DevOps начинает запускать освобождение Squirrel в фоновом режиме, но поскольку squirrel является асинхронным (мне сказали об этом, и я просматривал некоторый фрагмент кода, похоже, так), он сразу же завершается, и только * * .nupkg. и ** - full.nupkg созданы. Итак, я чувствую, что он начинает преобразовывать пакет в версию с белкой, но он останавливается после выхода команды powershell.
Этого не происходит, когда я вручную освобождаю через PowerShell на диске сервера Я вижу, что файлы внутри моего рабочего каталога создаются в следующем порядке
**. nupkg ** - full.nupkg удаляет **. nupkg создает Setup, exe необязательный Setup.msi
Если кому-то понадобится дополнительная информация, я буду рад поделиться. Кто-нибудь знает, возможно ли это?
если вы прочитаете файл журнала белка, который находится внутри каталога белка SquirrelSetup.log
, вы увидите, что не так с кодом, который вы выполнили
@ Махди Халили
Да, это должна быть семантическая версия, и это не во время установки, а во время выпуска, поэтому я не думаю, что журнал squirrel здесь не будет работать.
Мы просто использовали параметры ожидания и передачи в оболочку PowerShell для процесса освобождения. Потом все заработало.
для меня это произошло после изменения файла проекта
.rc
, я добавил динамический номер сборки в версию1.1.1.20
, которая является последним номером, я изменил его на ноль, и проблема решена, я думаю, белка не поддерживает более трехзначный номер версии