Я работаю над проектом, развернутым с помощью ClickOnce, и у меня есть несколько проблем.
В моем программном решении есть два компонента: настольный клиент, которому требуется .NET framework 3.5 для запуска, а сервер (ASP.NET приложение), в котором перечислены доступные документы и предоставляется способ установки клиентского стола с помощью ClickOnce.
Моя первая проблема - это предварительные условия: мне нужен способ установки рамки 3.5 до установки клиента. Visual studio создает setup.exe
, который позаботится об этом, но для его работы он должен запускаться напрямую (вместо ссылки на файл .application
) и развертывания URL должен быть известен при создании манифеста ClickOnce.
Таким образом, у меня есть еще две проблемы: по-видимому, нет возможности запустить клиентское приложение с аргументами строки запроса после установки его с помощью setup.exe
, поэтому вместо того, чтобы иметь сервер, отображающий список документов, ссылающийся на URL-адрес типа ".../client.application?document=doc1" У меня есть только ссылка на setup.exe
.
Другая проблема - наихудшая: сервер предназначен для использования в относительно небольших частных сетях, а не на одном веб-сервере. Проблема заключается в следующем: я не знаю URL развертывания клиента ClickOnce во время сборки, поэтому setup.exe
не может работать должным образом, когда установлен флажок "установить с веб-сайта". На данный момент обходным решением является наличие автономного установщика, который содержит setup.exe
, предварительные требования и файлы развертывания ClickOnce в большом ZIP файле.
Пользователь с соответствующей версией фреймворка может по-прежнему использовать ссылку .application
с запросом к документу для установки/обновления клиента и открытия документа. Пользователь без рамки получает сообщение об ошибке ( "Требуется обновление системы blablabla 3.5.0.0 blabla GAC" ), и ему необходимо загрузить ZIP файл, извлечь его на свой локальный компьютер и запустить файл setup.exe
для установки фреймворка и затем клиент. И после этого он должен вернуться к списку документов и использовать ссылку для запуска клиента с правильными аргументами.
Излишне говорить, что я не очень горжусь этой стратегией, которая разрушает все преимущества развертывания ClickOnce.
Можно ли избавиться от вопроса о предварительных требованиях более элегантным способом? Есть ли простой способ изменить URL-адрес установки приложения ClickOnce при развертывании сервера в сети (например, написать URL-адрес в файле конфигурации или что-то еще)?