Как вы публикуете сборку ClickOnce на компакт-диске с MSBuild
Кто-нибудь знает, как создать публикацию ClickOnce для компакт-диска с задачей публикации в MSBuild?
VS2008 имеет "мастер публикации" с возможностью выбора кнопки "Публикация на CD". Он публикует щелчок после установки в локальной папке, которая подходит для записи на компакт-диск.
Мы следуем за запланированной MSBuild с этапами постобработки, в которых мы настраиваем ее и устанавливаем в заданную среду, и нам хотелось бы иметь способ создания компакт-диска с выходными данными ClickOnce.
Я смог заставить этот процесс работать для веб-установки и установки общего ресурса, но кажется, что "мастер публикации" выполняет скрытый шаг, который я не могу обнаружить.
Я схожу с ума, пытаясь сопоставить различные свойства в диалоговых окнах публикации, мастере публикации, цели публикации msbuild, mage.exe и mageui.exe. Некоторые элементы имеют одинаковое имя, некоторые отличаются между диалогами и свойствами, некоторые могут быть заданы в одной области, но не в другой.
Я вижу, что автоматизация ClickOnce может быть выполнена, но в целом это кажется технологией графического интерфейса пользователя, и сценарии, кажется, идут вразрез с его структурой.
Билл
2 ответа
Ну, я ответил на свой вопрос.
Это вопрос Http-кодирования!
Когда вы публикуете приложение, вы получаете структуру папок, например: C:\myApp\Application Files\version 1
Когда вы изменяете содержимое опубликованного приложения (как вы делаете, когда хотите заменить файл конфигурации), вы должны оставить приложение и манифесты развертывания.
И когда вы это делаете, MageUi.exe Http кодирует "Местоположение" приложения. Манифест.
Итак, теперь в манифесте развертывания говорится, что путь к локальному файлу к манифесту приложения выглядит примерно так: Application%20Files\myApp_version\myApp.exe.manifest
И так как этот путь не существует, он вызывает установку на компакт-диске с сервера http: update, если он существует, и сбой, если его нет.
Наша работа заключается в том, чтобы переименовать "Файлы приложений" в "Файлы приложений".
Невероятно...
Просто чтобы добавить к этому, кажется, что это имеет какое-то отношение к запуску MageUi на выходе шага публикации.
Если я публикую с MSBuild из командной строки, это выглядит так:
msbuild C:\myapp.vbproj /target:publish `
/property:PublishDir=c:\ClickOnce\ `
/property:SolutionDir=C:\trunk\myapp\ `
/property:TargetZone=LocalIntranet `
/property:MapFileExtensions=True `
/property:PublisherName='my publisher' `
/property:ProductName='myProduct' `
/property:BootstrapperEnabled=True `
/property:IsWebBootstrapper=False `
/property:GenerateManifests=True `
/property:ApplicationVersion=1.2.3.4 `
/property:Configuration=Debug `
/property:UpdateUrl=http://localhost/ClickOnce/ `
/property:UpdateEnabled=True `
/property:Install=True
Затем я создаю папку, которую можно установить с компакт-диска.
Когда я манипулирую файлом конфигурации и добавляю дополнительный вывод из другого процесса в папку публикации, а затем использую MageUI для регенерации приложения и развертывания манифестов, я создаю установку на основе файлов, которая фактически устанавливается из updateURL. Если я отключаюсь от Интернета, я получаю исключение "Невозможно подключиться к удаленному серверу", поэтому вместо проверки обновлений он также настаивает на установке с веб-сервера.