2014-09-24 4 views
2

У меня есть эта служба, которая является .exe-файлом, и у меня есть .exe, который устанавливает эту службу. Можно ли запустить программу-установщик exe>, которая записывает службу exe>, а затем делать другие вещи, поэтому вам не нужно иметь 2 файла .exe, но только 1?Запись исполняемого файла другим

+0

Вместо создания установщика для вашей службы вы можете использовать службу exe и использовать 'installUtil' для ручной установки службы. – Habib

+0

У меня есть автоустановщик, и я не хочу использовать ручную установку. – thijmen321

ответ

1

Вы можете добавить service.exe как EmbeddedResource в свой файл install.exe.

Для извлечения вы можете сделать:

try 
{ 
    File.WriteAllBytes(@"c:\service.exe", Resources.embeddedserviceexe); 
} 
catch 
{ 
    // ToDo 
} 

Если вы не хотите, чтобы добавить свой ехе к ресурсам проекта (с помощью менеджера ресурсов в свойствах проекта), вы можете просто добавить ех к вам проект, установить его свойства EmbeddedResource, а затем сделать:

try 
{    
    using (Stream resourceStream = Assembly.GetExecutingAssembly().GetManifestResourceStream("Namespacename.service.exe")) 
    { 
     using (FileStream fileStream = new FileStream(@"c:\service.exe", System.IO.FileMode.Create)) 
     { 
      for (int i = 0; i < resourceStream.Length; i++) 
       fileStream.WriteByte((byte)resourceStream.ReadByte()); 
     } 
    } 
} 
catch 
{ 
    // ToDo 
} 
-1

Это как рожают :) я бы, наверное, выбрал другой подход. Как насчет использования пакетов?

+0

Это не отвечает на вопрос ОП или объясняет предложенную альтернативу. –

Смежные вопросы