Нет. Существует много путаницы по поводу ClickOnce и предпосылок.
ClickOnce не выполняет ничего с предварительными требованиями. Ничего такого. ClickOnce копирует файлы с сервера на компьютер клиента и синхронизирует эти файлы при обновлении файлов на сервере - вот и все. Он не может помещать вещи в GAC, регистрировать dll, устанавливать файлы MSI и т. Д.
Беспорядок возникает при развертывании с Visual Studio. Когда вы публикуете, VS делает несколько вещей, которые на самом деле не имеют ничего общего с ClickOnce. С одной стороны, он создает хорошую HTML-страницу для вас с некоторыми ссылками на ваше развертывание. Кроме того, он позволяет выбирать из нескольких предварительных требований и создаст для вас exe-загрузчик. Я предполагаю, что вы сделали это для установки Crystal Reports. Загрузчик - это простой способ управлять несколькими предварительными требованиями. Вместо того чтобы указывать пользователю установить X, затем Y, затем Z перед установкой приложения, загрузчик делает эти три установки «бесшовными», поэтому они выглядят так, как будто это одна большая установка. Он также может пропустить установку prereq, если он уже есть у пользователя.
Если вы обратите внимание на html-страницу, которую генерирует VS, вы увидите две ссылки. Один к вашему файлу .application (развертывание ClickOnce) и один к исполняемому файлу загрузчика. Вы в значительной степени зависите от пользователей и должны полагаться на них, чтобы они читали страницу и запускали загрузчик, если это необходимо. Единственным исключением является .Net Framework, поскольку html-страница может проверить это с помощью строки UserAgent.
Если они не запустят загрузчик, они получат ошибки, очень похожие на ту, о которой вы спрашиваете.
Одно из возможных решений - написать код, чтобы проверить, установлен ли он. Он может проверить реестр или папку «Program Files»; все, что вам нужно сделать, чтобы убедиться, что он установлен. Затем выйдите изящно и сообщите пользователю, если у него его нет. Это будет работать до тех пор, пока вы выполняете проверку, прежде чем пытаться загрузить и использовать сборки Crystal.
Удачи! Пожалуйста, ответьте, если вы найдете лучшее решение.