2017-07-13 1 views
1

je voudrais intégrer dans un seul exe tous les fichiers/ressources (2 exe et de son ps1)Intégrer tous les fichiers en un seul exe

Est-il possible? et comment on pourrait s'y prendre, actuellement j'ai réussi à publier le projet mais il y a des fichiers supplémentaires (Application Files, Application Manifest et setup exe) dans la sortie - ce que je voudrais intégrer dans le single exe.

Vous avez fait quelques lectures, semble-t-il que je devrais intégrer les ressources et peut-être créer des pointeurs? ou l'intégration des ressources d'image dans le projet, pas sûr si je suis sur la bonne voie droite et/ou comment démarrer le code ..

Ce que j'ai jusqu'à présent

private Boolean Install_certificate() 
{ 
    try 
    { 
     var newProcessInfo = new System.Diagnostics.ProcessStartInfo() 
     { 
      FileName = @"C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe", 
      Verb = "runas", 
      Arguments = (@"–ExecutionPolicy Bypass ""script.ps1""") 

     }; 
     System.Diagnostics.Process.Start(newProcessInfo); 


     // Install the cert & change proxy settings 
     //System.Diagnostics.Process.Start(@"script.ps1"); 
     return true; 
    } 
    catch 
    { 
     return false; 
    } 
} 
private Boolean Install_exe1() 
{ 
    try 
    { 
     // Install exe1 
     System.Diagnostics.Process.Start(@"setup1.exe"); 

     return true; 

    } 
    catch 
    { 
     return false; 
    } 
} 
private Boolean Install_exe2() 
{ 
    try 
    { 
     // Install exe2 
     System.Diagnostics.Process.Start(@"setup2.exe"); 
     return true; 
    } 
    catch 
    { 
     return false; 
    } 
} 

apprécie l'aide!

Merci

Répondre

1

Vous pouvez utiliser System.Diagnostics.Process pour démarrer les fichiers .exe.

Vous pouvez utiliser System.Management.Automation pour exécuter des scripts de shell d'alimentation.

Si vos exes travaillent avec leurs dépendances à partir d'une invite de commande, vous ne devriez pas avoir un problème dans C#

Si vous souhaitez intégrer ces fichiers dans votre projet C# vous pouvez add them as resources et quand votre programme fonctionne, vous pouvez enregistrer leur contenu binaire à un fichier exe, puis les exécuter:

En un mot, faites un clic droit sur votre projet, choisissez les propriétés, puis cliquez sur ressources. Cliquez sur le lien pour ajouter un fichier de ressources par défaut à votre projet,

Ensuite, dans le concepteur de ressources, sélectionnez les fichiers, puis ajoutez la ressource et ajoutez les fichiers que vous souhaitez intégrer. Cela créera un fichier Resources dans lequel vos fichiers seront incorporés et auxquels vous pourrez accéder en tant que byte[] dans votre application.

enter image description here

Ensuite, lorsque vous l'application commence à les enregistrer sur le disque et de les exécuter:

using System; 
using System.IO; 
using System.Diagnostics; 
namespace myNs 
{ 

    class Program 
    { 
     static void unpack() 
     { 
      if (!File.Exists("exe1.exe")) 
       File.WriteAllBytes("exe1.exe", myNs.Properties.Resources.exe1); 
      if (!File.Exists("exe2.exe")) 
       File.WriteAllBytes("exe2.exe", myNs.Properties.Resources.exe2); 
      if (!File.Exists("ps1.ps")) if (!File.Exists("ps1.ps")) 
        File.WriteAllBytes("ps1.ps", myNs.Properties.Resources.ps1); 
     } 
     static void Main(string[] args) 
     { 
      unpack(); 
      Process process = new Process(); 
      process.StartInfo.FileName = "exe1.exe"; 
      process.Start(); 
      process.WaitForExit(); 

      process = new Process(); 
      process.StartInfo.FileName = "exe2.exe"; 
      process.Start(); 
      process.WaitForExit(); 

      process = new Process(); 
      process.StartInfo.FileName = @"C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe"; 
      process.StartInfo.Arguments = "ps1.ps1"; 
      process.Start(); 
      process.WaitForExit(); 
     } 
    } 
} 
+0

Oui J'utilise System.Diagnostics.Process et System.Management.Automation, ma question concerne la compilation de la PowerSell + de l'exe en un seul exe sans les fichiers supplémentaires. – Hex02

+0

Y a-t-il une question ou un problème supplémentaire? J'ai répondu comment vous pourriez l'accomplir et posté des liens sur la façon d'utiliser le code pour accomplir la tâche. Compiler des exe différents en un exe n'est pas la même chose que de les exécuter depuis un seul exe. –

+0

Exécution à partir d'un exe unique - C'est la question/tâche – Hex02

0

ma question concerne la compilation des exe + powershell en un seul exe sans les fichiers supplémentaires

Vous pouvez ajouter le script ps1 comme une ressource comme l'illustre Alexander Higgins.

Vous pouvez fusionner deux assemblages à l'aide de l'outil ILMerge de Microsoft. Ici, nous fusionner Primary.dllSecondary.dll (et etc) en Merged.dll avec un fichier journal.txt hors de la fusion.

ilmerge /log:log.txt /out:Merged.dll Primary.dll Secondary.dll 

Parce que EXEs ont un point d'entrée vous ne pouvez pas Megre 2 EXEs, pour contourner ce simplement changer un des EXEs être une DLL (bibliothèque de classe).

+0

Désolé, je ne comprends pas vraiment votre suggestion, quelle serait l'utilité de changer l'exe en dll? – Hex02

+0

Lire la section Détails du lien que j'ai posté * Le premier assemblage de la liste des assemblages d'entrée est l'assemblage principal. Lorsque l'assembly principal est un exécutable, l'assembly cible est créé en tant qu'exécutable avec le même point d'entrée que l'assembly principal. * - En d'autres termes, vous ne pouvez pas avoir plus d'un exe, car il n'y en a qu'un seul. –