.NET ClickOnce, не устанавливающий необходимые как условие файлы?

Сначала происходит внутренний вызов, печатается 5 символов (\n, 1, 0, 0, 0) и возвращается 5.

Затем происходит внешний вызов и печатается 5, который был возвращен внутренним вызовом.

8
задан proudgeekdad 9 June 2009 в 18:13
поделиться

1 ответ

Нет. В отношении ClickOnce и предварительных условий существует большая путаница.

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

Путаница возникает при развертывании с помощью Visual Studio. Когда вы публикуете, VS делает за вас несколько вещей, которые не имеют ничего общего с ClickOnce. Во-первых, он создает для вас красивую html-страницу с некоторыми ссылками на ваше развертывание. Кроме того, он позволяет вам выбирать из нескольких предварительных требований и создавать для вас исполняемый файл начальной загрузки. Я предполагаю, что вы сделали это для установки Crystal Reports. Загрузчик - это простой способ управлять несколькими предварительными требованиями. Вместо того, чтобы сообщать пользователю установить X, затем Y, затем Z перед установкой вашего приложения, загрузчик делает эти три установки «бесшовными», так что они выглядят так, как если бы они были одной большой установкой. Он также может пропускать предварительные установки, если он уже установлен у пользователя.

Если вы обратите внимание на свою html-страницу, которую генерирует VS, вы увидите две ссылки. Один для вашего файла .application (развертывание ClickOnce) и один для загрузочного exe. Вы в значительной степени зависите от пользователей и должны полагаться на них, чтобы прочитать страницу и запустить загрузчик, если это необходимо. Единственным исключением является .Net Framework, поскольку html-страница может проверить это с помощью строки UserAgent.

Если они не запустят загрузчик, они получат ошибки, похожие на ту, что вы спрашиваете о.

Одно из возможных решений - написать код, проверяющий, установлен ли он. Он может проверить реестр или папку «Program Files»; все, что вам нужно сделать, чтобы убедиться, что он установлен. Затем аккуратно выйдите и сообщите пользователю, если у него его нет. Это будет работать до тех пор, пока вы выполните проверку, прежде чем пытаться загрузить и использовать сборки Crystal.

Удачи! Пожалуйста, ответьте, если найдете лучшее решение.

11
ответ дан 5 December 2019 в 17:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: