Как заставить публикацию в один клик работать после обновления до .NET framework 4.5

Я обновляю приложение с .NET3.5/EF3.5 до .NET4.5/EF5, используя Visual Studio 2012.

Публикация в один клик запускается, но генерирует следующие предупреждающие сообщения:

  • Элемент «Microsoft.Windows.Installer.3.1» не может быть расположен в папке «C:\Program Files (x86)\Microsoft SDK\Windows\v8.0A\Bootstrapper\».
  • Элемент «Установщик Windows 4.5» требуется для «.NET Framework 3.5 SP1», но не был включен.

Когда я пытаюсь установить опубликованную версию, я получаю диалоговое окно с сообщением

  • Не удается запустить приложение
  • Не могу скачать приложение. В приложении отсутствуют необходимые файлы. Обратитесь за помощью к поставщику приложения.

Нажатие кнопки «Подробности…» в диалоговом окне дает текст, который я вставлю ниже (я заменил свое имя пользователя на «...»)

Я проверил, что c:\Program Fiels (x86)\Microsoft SDKs\Windows\v8.0A\Bootstrapper существует. Это три папки с именами «Двигатель», «Пакеты» и «Схемы» и никакого другого содержимого.

PLATFORM VERSION INFO
Windows             : 6.1.7601.65536 (Win32NT)
Common Language Runtime     : 4.0.30319.18034
System.Deployment.dll       : 4.0.30319.17929 built by: FX45RTMREL
clr.dll             : 4.0.30319.18034 built by: FX45RTMGDR
dfdll.dll           : 4.0.30319.17929 built by: FX45RTMREL
dfshim.dll          : 4.0.41209.0 (Main.041209-0000)

SOURCES
Deployment url          : file:///C:/Users/.../AppData/Local/Microsoft/Windows/Temporary%20Internet%20Files/Content.IE5/56DYV716/Security%20Management%20System.application

ERROR SUMMARY
Below is a summary of the errors, details of these errors are listed later in the log.
* Activation of C:\Users\...\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.IE5\56DYV716\Security Management System.application resulted in exception. Following failure messages were detected:
    + Downloading file:///C:/Users/.../AppData/Local/Microsoft/Windows/Temporary Internet Files/Content.IE5/56DYV716/Security Management System.application did not succeed.
    + Could not find file 'C:\Users\...\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.IE5\56DYV716\Security Management System.application'.
    + Could not find file 'C:\Users\...\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.IE5\56DYV716\Security Management System.application'.
    + Could not find file 'C:\Users\...\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.IE5\56DYV716\Security Management System.application'.

COMPONENT STORE TRANSACTION FAILURE SUMMARY
No transaction error was detected.

WARNINGS
There were no warnings during this operation.

OPERATION PROGRESS STATUS
* [4/9/2013 3:04:00 PM] : Activation of C:\Users\...\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.IE5\56DYV716\Security Management System.application has started.

ERROR DETAILS
Following errors were detected during this operation.
* [4/9/2013 3:04:01 PM] System.Deployment.Application.DeploymentDownloadException (Unknown subtype)
    - Downloading file:///C:/Users/.../AppData/Local/Microsoft/Windows/Temporary Internet Files/Content.IE5/56DYV716/Security Management System.application did not succeed.
    - Source: System.Deployment
    - Stack trace:
        at System.Deployment.Application.SystemNetDownloader.DownloadSingleFile(DownloadQueueItem next)
        at System.Deployment.Application.SystemNetDownloader.DownloadAllFiles()
        at System.Deployment.Application.FileDownloader.Download(SubscriptionState subState)
        at System.Deployment.Application.DownloadManager.DownloadManifestAsRawFile(Uri& sourceUri, String targetPath, IDownloadNotification notification, DownloadOptions options, ServerInformation& serverInformation)
        at System.Deployment.Application.DownloadManager.DownloadDeploymentManifestDirectBypass(SubscriptionStore subStore, Uri& sourceUri, TempFile& tempFile, SubscriptionState& subState, IDownloadNotification notification, DownloadOptions options, ServerInformation& serverInformation)
        at System.Deployment.Application.DownloadManager.DownloadDeploymentManifestBypass(SubscriptionStore subStore, Uri& sourceUri, TempFile& tempFile, SubscriptionState& subState, IDownloadNotification notification, DownloadOptions options)
        at System.Deployment.Application.ApplicationActivator.PerformDeploymentActivation(Uri activationUri, Boolean isShortcut, String textualSubId, String deploymentProviderUrlFromExtension, BrowserSettings browserSettings, String& errorPageUrl)
        at System.Deployment.Application.ApplicationActivator.ActivateDeploymentWorker(Object state)
    --- Inner Exception ---
    System.Net.WebException
    - Could not find file 'C:\Users\...\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.IE5\56DYV716\Security Management System.application'.
    - Source: System
    - Stack trace:
        at System.Net.FileWebRequest.EndGetResponse(IAsyncResult asyncResult)
        at System.Net.FileWebRequest.GetResponse()
        at System.Deployment.Application.SystemNetDownloader.DownloadSingleFile(DownloadQueueItem next)
    --- Inner Exception ---
    System.Net.WebException
    - Could not find file 'C:\Users\...\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.IE5\56DYV716\Security Management System.application'.
    - Source: System
    - Stack trace:
        at System.Net.FileWebResponse..ctor(FileWebRequest request, Uri uri, FileAccess access, Boolean asyncHint)
        at System.Net.FileWebRequest.GetResponseCallback(Object state)
    --- Inner Exception ---
    System.IO.FileNotFoundException
    - Could not find file 'C:\Users\...\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.IE5\56DYV716\Security Management System.application'.
    - Source: mscorlib
    - Stack trace:
        at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
        at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
        at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy)
        at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, Boolean useAsync)
        at System.Net.FileWebStream..ctor(FileWebRequest request, String path, FileMode mode, FileAccess access, FileShare sharing, Int32 length, Boolean async)
        at System.Net.FileWebResponse..ctor(FileWebRequest request, Uri uri, FileAccess access, Boolean asyncHint)

COMPONENT STORE TRANSACTION DETAILS
No transaction information is available.

person Tim    schedule 09.04.2013    source источник


Ответы (2)


Я пропустил шаг в переориентации на .NET 4.5. Мне пришлось настроить предварительные условия следующим образом:

  • Откройте окно Свойства проекта (щелкните "Мой проект").
  • Нажмите Предварительные требования.
  • Снимите флажок .NET Framework 3.5 (или любую другую старую версию .NET framework. Особенно, если она имеет этот значок Желтый треугольник с восклицательным знаком.
  • Проверьте .NET Framework 4.5 (x86 и x64)."
  • Снимите флажок "Установщик Windows 3.1".
  • Отметьте "Установщик Windows 4.5".
person Tim    schedule 10.04.2013
comment
Предварительные требования находятся в разделе «Свойства проекта» -> «Опубликовать в VS2015». - person Kirsten Greed; 20.06.2017
comment
В Visual Studio 17 путь — Мой проект › Публикация › Предварительные требования (кнопка). Затем снимите флажок с установщика Windows 3.1. - person ConfusionTowers; 14.08.2019

У меня была эта ошибка, и решение сработало для меня. Мне нужно было только снять флажок с установщика Windows 3.1 и проверить установщик Windows 4.5, чтобы удалить это предупреждение.

person Robert Drummey    schedule 09.08.2013