Невозможно использовать публикацию ClickOnce в приложении .NET 4.0 из Visual Studio 2012

Я установил Visual Studio 2012 и отправился опубликовать одно из наших приложений, ориентированное на платформу .NET 4.0. В связи с настройкой на этих машинах в настоящий момент мы не можем настроить 4.5. Мы также используем "Загрузить предварительные условия из того же места, что и мое приложение".

При развертывании из Visual Studio 2012, я получаю следующую ошибку:

Чтобы включить "Загрузить предварительные условия из того же места, что и мой приложение" в диалоговом окне Предварительные требования, вы должны скачать файл 'DotNetFX40\dotNetFx40_Full_x86_x64.exe' для элемента 'Microsoft.NET Framework 4 (x86 и x64) "на ваш локальный компьютер. Для большего информацию см. http://go.microsoft.com/fwlink/?LinkId=239883.

Если вы перейдете по этой ссылке, вам будет предложено перейти к файлу Package.xml и найти ссылку на фактическое предварительное условие. В моем случае он должен перейти в http://go.microsoft.com/fwlink/?linkid=182805. Используя эту ссылку, он загрузил пакет с именем dotNetFx40_Full_setup.exe. Я поместил его в папку /Packages/DotNetFX40.

При попытке публикации снова из Visual Studio 2012, я получил ту же ошибку. Кажется, что этот файл не нравится.

Если я опубликую одно и то же приложение в том же месте с Visual Studio 2010, он все равно будет работать нормально.

Как я могу заставить это работать с Visual Studio 2012?

Ответ 1

У меня была такая же проблема.

Переименуйте файл dotNetFx40_Full_setup.exe, который вы загрузите в каталог C:\Program Files\Microsoft SDK\Windows\v8.0A\Bootstrapper\Packages\DotNetFX40, в dotNetFx40_Full_x86_x64.exe.

Я смог успешно опубликовать свое приложение после этого.

Ответ 2

Я считаю, что вы можете загрузить правильную программу установки dotNetFx40_Full_x86_x64.exe из:

http://www.microsoft.com/en-us/download/details.aspx?id=17718

(вместо переименования установщика .NET Framework 4, предложенного Брайаном). Поместите его в каталог C:\Program Files\Microsoft SDKs\Windows\v8.0A\Bootstrapper\Packages\DotNetFX40. У меня была похожая проблема с настройкой профиля клиента .NET. В моем случае я был сбит с толку неверную программу установки, выполнив справку Microsoft MSDN.

Ответ 3

У меня была аналогичная проблема.

Раздел реестра, указанный в документации MSDN http://msdn.microsoft.com/en-us/library/ms165429 (v = vs .110).aspx указал на каталог c:\Program Files (x86)\Microsoft SDK\Windows\v7.0A\Bootstrapper\как неверный каталог пакетов.

Visual Studio 2012 ищет пакеты в каталоге C:\Program Files (x86)\Microsoft SDK\Windows\v8.0A\Bootstrapper\Packages. На первый взгляд, пакеты, по-видимому, находились в каталоге пакетов, но там были только папки папок, причем исполняемые файлы отсутствовали в каждой папке пакета. Например, подкаталог DotNetFX40Client находился в папке пакетов, но файл dotNetFx40_Client_x86_x64.exe отсутствовал в папке DotNetFX40Client.

Ответ 4

Visual Studio 2012 разбивает установщик ClickOnce, что если вы даже получили Visual Studio 2012, чтобы обновить приложение, не сообщив вам, что оно больше не поддерживается.

Если вам удалось обновить свое решение, как и у вас, вы обнаружите, что ClickOnce действительно публикует все. Это только то, что предварительные условия не могут быть установлены, поэтому установка не выполняется. Если у вас все еще есть экземпляр Visual Studio 2010 вашего кода, который никогда не был затронут Visual Studio 2012, вы все равно можете создать эту копию, даже если вы обновите код с помощью кода Visual Studio 2012 с помощью вашего источника контроль. Пока эта сборка остается нетронутой, она будет продолжать работать, но если Visual Studio 2012 получает доступ к любому из файлов ClickOnce на этой копии, она просто не сможет найти зависимости.

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

Это требует, чтобы только два EXE файла были помещены в папку публикации, и вы устанавливаете их из стороннего установщика, а не из файлов ClickOnce. Это дает мне гораздо больше функциональности (я могу сделать так, чтобы я сделал то, что я хочу, многопоточный установщик/обновление, возможности понижения для разработчиков для отката), а также возможность изменять обновление (тематику) или как сделать установку.

Для тех, кто видит, что мой порядок выполнения - "Fake exe shortcut" --- > Updater --- > exe, вы заметите, что на самом деле сломаете пиннинг, потому что вы привяжете программу обновления, а не файл EXE, поэтому я запустил приложение только с аргументом "/updated", если его не было, само приложение должно запустить EXE файл обновления, присутствующий в той же папке (который показывает только, есть ли файлы для обновления) который затем обновляет и снова запускает исходный EXE файл с правильным аргументом команды. Прикрепление теперь работает, поскольку вы только открываете EXE файл. (Это также дает возможность пропустить обновление, поместив аргумент команды в TargetPath, и лучше всего, что конечный пользователь ничего не знает, поскольку он работает в фоновом режиме, а установщик является профессиональным и заклейменным).