Ошибка ClickOnce setup.exe, но файл приложения работает нормально при использовании общего ресурса Windows для развертывания.

Я получаю ошибку System.Deployment.Application.DeploymentDownloadException когда я пытаюсь запустить setup.exe для моего приложения ClickOnce. Если запустить его по сети из исходного местоположения, он работает нормально, но если я скопирую setup.exe с пути на сервере я получаю ошибку

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

Мне нужна установка, так как она устанавливает некоторые предварительные условия ( .NET 4), которых конечный пользователь может не иметь.

Нажатие кнопки "Сведения" в окне ошибок дает следующую информацию:

PLATFORM VERSION INFO
    Windows             : 6.1.7601.65536 (Win32NT)
    Common Language Runtime     : 4.0.30319.237
    System.Deployment.dll       : 4.0.30319.1 (RTMRel.030319-0100)
    clr.dll             : 4.0.30319.237 (RTMGDR.030319-2300)
    dfdll.dll           : 4.0.30319.1 (RTMRel.030319-0100)
    dfshim.dll          : 4.0.31106.0 (Main.031106-0000)

SOURCES
    Deployment url          : file:///C:/Users/srchamberlain/Downloads/ContractFlowTool.application

ERROR SUMMARY
    Below is a summary of the errors, details of these errors are listed later in the log.
    * Activation of C:\Users\srchamberlain\Downloads\ContractFlowTool.application resulted in exception. Following failure messages were detected:
        + Downloading file:///C:/Users/srchamberlain/Downloads/ContractFlowTool.application did not succeed.
        + Could not find file 'C:\Users\srchamberlain\Downloads\ContractFlowTool.application'.
        + Could not find file 'C:\Users\srchamberlain\Downloads\ContractFlowTool.application'.
        + Could not find file 'C:\Users\srchamberlain\Downloads\ContractFlowTool.application'.

COMPONENT STORE TRANSACTION FAILURE SUMMARY
    No transaction error was detected.

WARNINGS
    There were no warnings during this operation.

OPERATION PROGRESS STATUS
    * [8/16/2011 12:23:26 PM] : Activation of C:\Users\srchamberlain\Downloads\ContractFlowTool.application has started.

ERROR DETAILS
    Following errors were detected during this operation.
    * [8/16/2011 12:23:26 PM] System.Deployment.Application.DeploymentDownloadException (Unknown subtype)
        - Downloading file:///C:/Users/srchamberlain/Downloads/ContractFlowTool.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\srchamberlain\Downloads\ContractFlowTool.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\srchamberlain\Downloads\ContractFlowTool.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\srchamberlain\Downloads\ContractFlowTool.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)
            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.

Корень проблемы в том, что он пытается загрузить свои файлы по тому же пути, что и setup.exe запускается из (file:///C:/Users/srchamberlain/Downloads в данном случае) вместо фактического URL развертывания (\\fs1\contractflowtool)

Я видел несколько решений, но все они говорят мне, что решение состоит в том, чтобы изменить тип MIME на IIS. IIS не установлен на сервере, на котором размещены файлы.

Что еще можно сделать, чтобы это исправить, кроме "изменения типов MIME"?


ОБНОВИТЬ

Посмотрите второй пост в этой теме, чтобы узнать о некоторых тестах, которые я выполнил. Резюме: кажется, что setup.exe Файл использует рабочий каталог для загрузки своих файлов, так как он работает нормально, когда я запускаю EXE-файл по сети, но не получается, если я копирую EXE на свой локальный диск.

Как решить эту проблему, кроме "Сказать людям, чтобы они запускались по сетевому пути"?


ОБНОВЛЕНИЕ 2: Глядя на setup.exe файл с шестнадцатеричным редактором, я не мог найти путь установки где-либо в нем. Когда я изменил путь установки на http://example.com/Test я смог легко его найти.

Это ошибка Visual Studio, что она не сохраняет местоположение публикации / путь установки, если вы используете путь UNC?

2 ответа

Решение

Насколько я понимаю, Setup.exe файл не содержит вашу заявку; это просто, как Visual Studio устанавливает предпосылки, а затем запускает .application файл для фактической установки вашего приложения.

Я проверил это с помощью одного из моих собственных приложений. Сначала я просто скопировал setup.exe и получил ту же ошибку, что и вы:

ERROR SUMMARY
    Below is a summary of the errors, details of these errors are listed later in the log.
    * Activation of C:\Users\Andy\Desktop\Video Uploader.application resulted in exception. Following failure messages were detected:
        + Downloading file:///C:/Users/Andy/Desktop/Video Uploader.application did not succeed.
        + Could not find file 'C:\Users\Andy\Desktop\Video Uploader.application'.
        + Could not find file 'C:\Users\Andy\Desktop\Video Uploader.application'.
        + Could not find file 'C:\Users\Andy\Desktop\Video Uploader.application'.

Затем я скопировал Video Uploader.application на мой рабочий стол тоже, и это сработало. Таким образом, создается впечатление, что если вы хотите установить его не из общей сетевой папки, вам просто нужно убедиться, что в нем есть оба файла.

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

В мастере публикации на How will users install the application? страница, I selected From a CD-ROM or DVD-Rom, Я не знаю, может ли выбор одного из двух других вариантов изменить его работу.

Редактировать:
Я прочитал ваш другой пост. Я подозреваю, что это связано с тем, как различные протоколы обрабатывают файлы. Я смог заставить его работать от publish.html страница, но я фактически опубликовал его на веб-сервере, так что адрес страницы был http://www.example.com/programs/publish.html,

Я пытался запустить его из n:\webroot\programs\publish.htmlи это не удалось.

У вас есть способ опубликовать его на веб-сервере? Или хотя бы установить IIS или Apache, чтобы превратить его в веб-сервер?

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

Изменить 2:

Вот мои настройки публикации. Это работает, нажав на кнопку установки в Internet Explorer, Firefox и Chrome (все, что я тестировал).

Похоже, что установочный файл ищет на сайте .application файл, так что он не должен быть на локальном компьютере.

Изменить 3:

В Windows (проверено XP и Windows 7):
* Шаг 1: меню Пуск -> Выполнить
* Шаг 2: введите "iexpress" без "
* Шаг 3: Следуйте за волшебником.

http://expertester.wordpress.com/2008/07/11/create-self-extractinginstaller-for-free/

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

Мы используем самораспаковывающийся ZIP- файл для запуска нашей установки. (Есть много способов сделать это, например, использовать 7-Zip, WinZip и т. Д.) Таким образом, есть только 1 файл для загрузки.

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

Надеюсь, это поможет.

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