AdvancedInstaller в Devops — не может синхронизировать файлы

#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-файл обновления и ярлык на рабочем столе, я думаю. Я попробую это сделать. Спасибо. Все еще не имеет смысла, почему это работает локально, хотя.