Я хочу заархивировать папку.Это легко в операционных системах, таких как Linux, где системному администратору легко установить zip-инструмент командной строки, например apt install zip
.К сожалению, в Windows все не так просто.
Простой обходной путь, который я нашел, заключается в том, что я могу использовать Compress-Archive
в сценарии powershell, например так:
Compress-Archive -Path $folder -CompressionLevel Optimal -DestinationPath $zipPath
, а затем вызвать егос folder
и zipPath
до или после построения проекта.
Для этого у моего CMakeLists.txt
будет строка типа:
execute_process(COMMAND powershell ${powershellScriptPath} "\"${folderPathToZip}\"" "\"${outputZipPath}\"" OUTPUT_QUIET)
Это отлично работает, за исключением Я должен разрешить сценариям работать глобально и небезопасно на моем компьютере.
Я хочу, чтобы это работало на любом компьютере с Windows, не требуя, чтобы люди выполняли какие-либо настройки.Мне также не нравится идея заставить других разработчиков разрешать сценарии глобально и небезопасно по понятным причинам.Я бы хотел, чтобы мои разработчики могли открыть проект и нажать кнопку «Сборка», и все это работает, и это последнее, что мешает мне сделать это.
Есть ли способ, чтобы иметь возможностьзаставить этот скрипт работать, изменив способ вызова программы?Или я застрял и должен найти другой способ сделать это?Или есть какой-нибудь способ автоматически внести белый список в этот конкретный файл без дополнительных действий пользователя?
Единственный другой хакерский способ - написать собственную утилиту zip, которая будет вызываться при каждой сборке.сжать вещи, но это куча работы для чего-то, что кажется настолько близким к работоспособности.
Редактировать: я могу с уверенностью предположить, что на компьютере установлен PowerShell и является относительно современным