Не удается использовать публикацию 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?

4 ответа

Решение

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

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

После этого я смог успешно опубликовать свою заявку.

Я считаю, что вы можете скачать правильную программу установки 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 Client Profile. В моем случае я был сбит с толку к неправильной программе установки, следуя справке Microsoft MSDN.

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, и лучше всего конечный пользователь ничего не знает, так как это фоновый процесс, а установщик профессиональный и фирменный).

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

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

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

Другие вопросы по тегам