Подтвердить что ты не робот

Ошибка ClickOnce setup.exe, но файл .application отлично работает при использовании общего ресурса 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 на локальный диск.

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


UPDATE2: Глядя на файл setup.exe с шестнадцатеричным редактором, я не мог найти свой путь установки в нем. Когда я изменил путь установки на http://example.com/Test, я смог легко найти его.

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

4b9b3361

Ответ 1

Как я понимаю, файл 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 на свой рабочий стол, и он сработал. Таким образом, кажется, что если вы хотите установить его где-то, кроме сетевого ресурса, вам просто нужно убедиться, что у него есть оба файла.

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

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

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

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

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

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

Enter image description here

Изменить 2:

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

Enter image description here

Enter image description here

Кажется, что файл настроек просматривает веб-сайт для файла .application, поэтому ему не нужно находиться на локальном компьютере.

Изменить 3:

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

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

Enter image description here

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

Ответ 2

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

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

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