Встраивание приложения-службы Windows в качестве ресурса в файл resx и установка во время выполнения - PullRequest
0 голосов
/ 22 мая 2019

Я пишу dll, который должен содержать '.exe' (приложение службы Windows) в качестве встроенного ресурса, следуя указаниям по этой ссылке Встраивание внешнего исполняемого файла в программу на C # .Я могу извлечь .exe в виде байтового массива и скопировать его в каталог назначения.Все хорошо до этого момента.

После этого я попытался программно установить эту службу Windows из моей библиотеки, используя то, что указано здесь - не удалось, затем попытался вручную выполнить installutil после извлечения exe - снова не удалосьа затем снова прибегнул к программным средствам и попытался ManagedInstallerClass.InstallHelper(new string[] { "/u", <Path_To_My_Exe> }); и снова потерпел неудачу.Во всех этих случаях я получил классический

. Не найдено общедоступных установщиков с атрибутом RunInstallerAttribute.Yes

, связанных с отсутствием установщика для приложения-службы Windows.

Классу установщика также присвоено значение RunInstallerAttribute, равное True.

 using System.Collections;
 using System.ComponentModel;
 using System.Configuration.Install;

 namespace Dell.Client.Framework.AutoUpdateBootstrapper
 {
     [RunInstaller(true)] //This attribute is true.
     public partial class ProjectInstaller : Installer
     {
         public ProjectInstaller()
         {
             InitializeComponent();
         }

         protected override void OnAfterInstall(IDictionary savedState)
         {
             base.OnAfterInstall(savedState);
             using (System.ServiceProcess.ServiceController serviceController = new System.ServiceProcess.ServiceController(serviceInstaller1.ServiceName))
             {
                 serviceController.Start();
             }
         }
     }
 }

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

...