Пользовательский установщик ClickOnce

В соответствии с Пошаговое руководство. Создание пользовательского установщика для статьи MSDN для приложения ClickOnce можно создать пользовательский установщик ClickOnce. Я не могу понять, как переопределить установщик по умолчанию? Они говорят, что в конце вызывают свой собственный класс установщика, но где?

Спасибо, Идо.

Ответ 1

Это потому, что статья Microsoft немного вводит в заблуждение. В этой статье объясняется, как создать пользовательское приложение-установщик. Он не описывает, как изменить ваше приложение, чтобы он имел собственный диалог установщика, а не стандартный, который является частью системы.

Чтобы создать установщик клиента, создайте отдельное приложение, аналогичное тому, которое указано в коде из статьи MSDN. Вы захотите добавить в это приложение. Основной метод кода на шаге № 5, однако, измените код, чтобы найти манифест приложения из точки установки. Компилируйте приложение и распространяйте его на своих пользователей, но вы считаете нужным.

Хотя вам придется управлять дистрибутивом исходного приложения-установщика, вы можете реализовать этот процесс в своем приложении для обновлений. В этом случае следуйте инструкциям в этой статье. Как я уже упоминал ранее, вы захотите проверить свои обновления, когда и как вы пожелаете. Как только обновление необходимо, ваше приложение может вызывать код на шаге № 5 из вашего приложения ClickOnce.

Ответ 2

У меня был целый разговор с клиентом ClickOnce в Microsoft об этом. Честно говоря, меня раздражали, потому что на самом деле они не дают достаточного руководства. Он сказал следующее: вам нужно создать exe файл, но вам нужно поместить чеки, чтобы убедиться, что .NET Framework установлена ​​до запуска exe. Итак, создайте свой собственный исполняемый файл и запустите его как setup.exe - вот где пользовательский код для установки приложения.

Я думаю, что в конечном итоге он имел в виду, что вам нужно написать какой-то загрузочный блок в коде .NET(например, C), который проверяет .NET Framework и устанавливает его, если это необходимо. Затем он будет запускать другой exe, который управляется кодом, который имеет ваши вызовы InPlaceHostingManager и пользовательский интерфейс в нем.