Настройка установщика ClickOnce - PullRequest
1 голос
/ 10 июня 2011

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

Из того, что я обнаружил, можно добавить класс, содержащий методы InPlaceHostingManager, и использовать его для явной установки / обновления позже, но как можно переопределить установщик ClickOnce по умолчанию, чтобы вызывать пользовательский код?

Я хотел бы эмулировать поведение древнего Проекта установки, который вызывает метод Install любого наследника System.Configuration.Install.Installer, который вы подключаете к своему проекту.

Спасибо.

Ответы [ 3 ]

1 голос
/ 10 июня 2011

Почему вы не можете сделать кодирование файлов первым делом, когда ваше приложение запускается раньше, чем оно делает что-то еще? Неужели уже слишком поздно?

Вы можете использовать InPlace Hosting Manager для обновления приложения clickonce. Вы можете использовать его для его установки, единственное, что нужно, - это заранее установить .NET Framework или написать небольшой исполняемый файл на C, который проверит его (не может быть управляемым кодом).

Посмотрите, поможет ли это вам: http://msdn.microsoft.com/en-us/library/dd997001(v=VS.100).aspx

1 голос
/ 10 июня 2011

Я не верю, что это возможно с ClickOnce.

На мой взгляд, некоторые из ваших опций включают:

  1. Возвращаясь к установщику MSI
  2. Кодирование файлов конфигурации как этап до / после компиляции на компьютере разработчика / публикации, а затем развертывание полностью закодированной версии
  3. Кодирование файлов конфигурации в при первом запуске приложения (если вы найдете способ убедиться, что они не заблокированы)

Также вы упомянули InPlaceHostingManager. Мне кажется, что это способ размещения платформы установки ClickOnce (вместо того, чтобы делать это, например, через IE). Таким образом, это может позволить вам создать пользовательское приложение установки для размещения установки и выполнить шаги после установки, но проблема в том, что вам все равно нужно будет каким-то образом установить ваше пользовательское приложение установки (и запустить его как пользователь с правами установки). ...

0 голосов
/ 18 марта 2014

Вы можете использовать FirstRun .

Пространство имен : System.Deployment.Application

Сборка : System.Deployment(в System.Deployment.dll)

Метод будет вызываться в первом окне.

private void DownloadFileGroupSync(string fileGroup)
        {
            if (ApplicationDeployment.IsNetworkDeployed)
            {
                ApplicationDeployment deployment = ApplicationDeployment.CurrentDeployment;

                if (deployment.IsFirstRun)
                {
                    try
                    {
                        if (deployment.IsFileGroupDownloaded(fileGroup))
                        {
                            deployment.DownloadFileGroup(fileGroup);
                        } 
                    }
                    catch (InvalidOperationException ioe)
                    {
                        MessageBox.Show("This application is not a ClickOnce application. Error: " + ioe.Message);
                        return;
                    }

                    downloadStatus.Text = String.Format("Download of file group {0} complete.", fileGroup);
                }
            }            
        }
...