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

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

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

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

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

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

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

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

4 ответов


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

переименовать dotNetFx40_Full_setup.exe-файл, который вы загружаете в C:\Program файлы\Microsoft SDKs\Windows\v8.0a\Bootstrapper\Packages\dotnetfx40 каталог в dotNetFx40_Full_x86_x64.исполняемый.

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


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

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

(вместо переименования установщика .NET Framework 4, Как предложил Брайан). Поместите его в . У меня был аналогичная проблема с настройкой профиля клиента .NET. В моем случае я сбился с пути к неправильной программе установки, следуя Microsoft MSDN Помощь.


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

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

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


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. Это дает мне намного больше функциональности (я могу заставить его делать то, что я хочу, многопоточный установщик/обновление, возможности понижения для разработчиков откат) и свободу изменять обновление (тематику) или как выполняется установка.

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