Как вы публикуете сборку ClickOnce на компакт-диске с MSBuild - PullRequest
1 голос
/ 09 декабря 2008

Кто-нибудь знает, как создать публикацию ClickOnce для компакт-диска с задачей публикации в MSBuild?

VS2008 имеет «мастер публикации» с возможностью выбора кнопки «Публикация на CD». Он публикует щелчок после установки в локальной папке, которая подходит для записи на компакт-диск.

Мы выполняем запланированный MSBuild с этапами постобработки, в которых мы настраиваем его и устанавливаем в заданную среду, и нам хотелось бы иметь способ создания компакт-диска с выходными данными ClickOnce с возможностью создания сценариев.

Я смог заставить этот процесс работать для веб-установки и установки общего файлового ресурса, но кажется, что «мастер публикации» выполняет скрытый шаг, который я не могу обнаружить.

Я схожу с ума, пытаясь соотнести различные свойства в диалогах публикации, мастере публикации, цели публикации msbuild, mage.exe и mageui.exe. Некоторые элементы имеют одно и то же имя, некоторые различаются между диалоговыми окнами и свойствами, некоторые могут быть заданы в одной области, но не в другой.

Я вижу, что автоматизация ClickOnce может быть выполнена, но в целом это, кажется, технология графического интерфейса пользователя, и сценарии, кажется, идут вразрез с его структурой.

Bill

Ответы [ 2 ]

1 голос
/ 11 декабря 2008

Ну, я ответил на свой вопрос.

Это вопрос Http-кодирования!

Когда вы публикуете приложение, вы получаете структуру папок, например: C: \ myApp \ Application Files \ version 1

Когда вы изменяете содержимое опубликованного приложения (как вы делаете, когда хотите заменить файл конфигурации), вы должны оставить приложение и манифесты развертывания.

И когда вы это делаете, MageUi.exe Http кодирует «Местоположение» приложения. Манифест.

Итак, теперь в манифесте развертывания говорится, что путь к локальному файлу к манифесту приложения выглядит примерно так: Application% 20Files \ myApp_version \ myApp.exe.manifest

И так как этот путь не существует, он, по-видимому, приводит к установке на компакт-диске с сервера обновлений http:, если он существует, и к сбою, если его нет

Наша задача - переименовать «Файлы приложений» в «Файлы приложений».

Невероятно ...

1 голос
/ 10 декабря 2008

Просто добавьте, что это как-то связано с запуском 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. Если я отключаюсь от Интернета, я получаю исключение «Невозможно подключиться к удаленному серверу», поэтому вместо проверки обновлений он также настаивает на установке с веб-сервера.

...