#azure-pipelines #advanced-installer
Вопрос:
У меня есть следующая задача в моей сборке CI.
- task: CmdLine@2
displayName: Update Installer Project amp; Build
inputs:
script: |
echo $(publishPath)
AdvancedInstaller.com /edit $(agentMSIProject) /NewSync APPDIR "$(publishPath)" -exclude_subfolders -exclude_patterns *.pdb -existingfiles delete
AdvancedInstaller.com /edit $(agentMSIProject) /SetOutputLocation -buildname DefaultBuild -path $(outputPath)
AdvancedInstaller.com /build $(agentMSIProject)
Я пытался напрямую использовать задачу AdvancedInstaller@2, но не могу разобраться в этом, поэтому просто использовал свой сценарий сборки без devops.
Я получаю следующую ошибку. Похоже, что AdvancedInstaller не интерпретирует путь $publishPath.
========================== Starting Command Output ===========================
"C:Windowssystem32cmd.exe" /D /E:ON /V:OFF /S /C "CALL "D:a_tempecc57176-0a2e-441e-8255-57ea9bf8ad19.cmd""
D:a1aagentPublish
Some files and/or folders are referenced from other components and were not deleted.
The source folder "D:aagentPublish" of the synchronized folder "APPDIR" is missing from disk. You need to either recreate the source folder path or reset the synchronization from the "Folder Properties" dialog, in "Synchronize" tab.
Я что-то пропустил здесь?
Спасибо
== Обновление
Мой сценарий сборки теперь выглядит так :
- task: AdvancedInstallerTool@1
displayName: Install Advanced Installer
inputs:
advinstVersion: 18.3
advinstEnableCom: true
advinstLicense: $(AdvancedInstallerLicenseKey)
- task: PowerShell@2
displayName: Update Installer Project
inputs:
targetType: inline
script:
AdvancedInstaller.com /edit $(agentProject) /DelShortcut -name "Agent" -dir DesktopFolder
AdvancedInstaller.com /edit $(agentProject) /DelShortcut -name "Agent" -dir SHORTCUTDIR
AdvancedInstaller.com /edit $(agentProject) /DelShortcut -name "Check for Updates" -dir SHORTCUTDIR
AdvancedInstaller.com /edit $(agentProject) /DelShortcut -name "Uninstall [|ProductName] [|ProductVersion]" -dir SHORTCUTDIR
AdvancedInstaller.com /edit $(agentProject) /UpdatePathVariable -name PublishSource -value "$(publishPath)" -valuetype Folder
AdvancedInstaller.com /edit $(agentProject) /NewSync APPDIR "$(publishPath)" -exclude_subfolders -exclude_patterns *.pdb
AdvancedInstaller.com /edit $(agentProject) /NewShortcut -name "Agent" -dir DesktopFolder -target APPDIRAgent.exe -runasadmin -wkdir APPDIR -icon "$(installerIcon)"
AdvancedInstaller.com /edit $(agentProject) /NewShortcut -name "Agent" -dir SHORTCUTDIR -target APPDIRAgent.exe -runasadmin -wkdir APPDIR -icon "$(installerIcon)"
AdvancedInstaller.com /edit $(agentProject) /NewShortcut -name "Check for Updates" -dir SHORTCUTDIR -target APPDIR/Updater.exe -icon "$(updaterIcon)" -wkdir APPDIR
AdvancedInstaller.com /edit $(agentProject) /NewShortcut -name "Uninstall [|ProductName] [|ProductVersion]" -dir SHORTCUTDIR -target [SystemFolder]msiexec.exe -icon "$(uninstallerIcon)" -arg "/x [ProductCode]"
AdvancedInstaller.com /edit $(agentProject) /SetOutputLocation -buildname DefaultBuild -path $(outputPath)
AdvancedInstaller.com /build $(agentProject)
Я использую переменную пути для папки синхронизации APPDIR.
Теперь я получаю эту ошибку:
Unknown parameter: -name. Maybe you should use instead: -name.
Unknown parameter: -dir. Maybe you should use instead: -dir.
Unknown parameter: -name. Maybe you should use instead: -name.
Unknown parameter: -dir. Maybe you should use instead: -dir.
Unknown parameter: -name. Maybe you should use instead: -name.
Unknown parameter: -dir. Maybe you should use instead: -dir.
Unknown parameter: -name. Maybe you should use instead: -name.
Unknown parameter: -value. Maybe you should use instead: -name.
Unknown parameter: -valuetype.
Unknown parameter: -exclude_subfolders.
Unknown parameter: -exclude_patterns.
Unknown parameter: -name. Maybe you should use instead: -name.
Unknown parameter: -dir. Maybe you should use instead: -dir.
Unknown parameter: -target.
Unknown parameter: -runasadmin.
Unknown parameter: -wkdir. Maybe you should use instead: -dir.
Unknown parameter: -icon.
Unknown parameter: -name. Maybe you should use instead: -name.
Unknown parameter: -dir. Maybe you should use instead: -dir.
Unknown parameter: -target.
Unknown parameter: -runasadmin.
Unknown parameter: -wkdir. Maybe you should use instead: -dir.
Unknown parameter: -icon.
Unknown parameter: -name. Maybe you should use instead: -name.
Unknown parameter: -dir. Maybe you should use instead: -dir.
Unknown parameter: -target.
Unknown parameter: -icon.
Unknown parameter: -wkdir. Maybe you should use instead: -dir.
Unknown parameter: -name. Maybe you should use instead: -name.
Unknown parameter: -dir. Maybe you should use instead: -dir.
Unknown parameter: -target.
Unknown parameter: -icon.
Unknown parameter: -arg. Maybe you should use instead: -name.
Ответ №1:
Похоже, что на старые синхронизированные ресурсы ссылаются в вашем проекте установки другие объекты установки (возможно, службы, сборки, ярлыки, записи пользовательских действий и т. Д.), И при выполнении команды /NewSync не удается удалить эти старые синхронизированные ресурсы.
Правильным подходом было бы удалить/удалить все объекты установки, которые ссылаются на синхронизированные ресурсы, перед вызовом команды /NewSync.
Надеюсь, это будет полезно.
Комментарии:
1. Так что это будет похоже на exe-файл приложения, exe-файл обновления и ярлык на рабочем столе, я думаю. Я попробую это сделать. Спасибо. Все еще не имеет смысла, почему это работает локально, хотя.