J'ai inclus un exécutable dans mon projet (c'est-à-dire lorsque vous déployez le projet dans l'Explorateur de solutions dans VS2008, vous le voyez avec toutes les autres classes). Cet exécutable devra être lancé par mon programme. Comment puis-je récupérer son chemin par programme?Comment puis-je obtenir le chemin d'une ressource compilée?
Répondre
Je n'ai jamais fait cela auparavant avec des exécutables ... Cependant, s'il s'agit d'une ressource incorporée, vous pouvez énumérer la liste des ressources intégrées dans votre application (ou vous y référer directement par son nom), lorsque vous trouvez le un approprié, écrivez-le sur le disque, puis exécutez-le.
Pour extraire:
Assembly assembly = Assembly.GetExecutingAssembly();
using (Stream stream = assembly.GetManifestResourceStream("resource name")
{
using FileStream fs= new FileStream("executable name")
{
byte[] buffer = new byte[32*1024];
int bytesRead;
while ((bytesRead= stream.Read(buffer, 0, buffer.Length)) > 0)
{
fs.Write(buffer, 0, bytesRead);
}
}
}
à exécuter:
using System.Diagnostics;
Process someProc;
someProc= Process.Start("executable name");
Comme Daniel L souligne, ne pas oublier de marquer les ressources comme une "ressource incorporée".
Voici un exemple d'obtenir le texte d'une ressource de texte:
Assembly assembly = Assembly.GetExecutingAssembly();
Stream stream = assembly.GetManifestResourceStream("ResourceTextFileName");
StreamReader textStreamReader = new StreamReader(stream);
Espérons que vous pouvez glaner comment faire un exécutable avec cela.
Vous pouvez utiliser la classe Assembly
-
Assembly.GetExecutingAssembly().Location
vous devriez pointer vers votre application en cours d'exécution. Utilisez ce chemin, supprimez le .EXE et ajoutez le nom de fichier de votre exécutable.
string filename = Assembly.GetExecutingAssembly().Location;
filename = filename.Substring(0, filename.LastIndexOf("\\") + 1);
filename += "my_exe_name.exe";
Process.Start(filename);
Notez que cela ne fonctionnera pas pour webapps, cependant, comme la propriété de localisation peut pointer à des endroits aléatoires comme le GAC.
Si vous déployez l'exécutable avec votre projet dans le même dossier, vous pouvez utiliser la classe Environment pour obtenir le répertoire de travail de votre exécutable. Ce serait: Environment.CurrentDirectory.
Vous pouvez définir la propriété "Copier dans le répertoire de sortie" de l'exécutable dans l'explorateur de solutions sur "Copier en tout temps" ou "Copier si nouveau" pour l'accommander.
Ce n'est pas exactement ce que vous avez demandé, mais pourrait être utile lors de l'utilisation d'une des suggestions d'autres personnes ont posté:
Sachez que si votre application est une application Windows Forms, et il finit par installer dans C : \ Program Files ... vous ne pouvez pas avoir un accès en écriture à votre dossier d'application si l'utilisateur qui démarre l'application ne s'exécute pas en tant qu'administrateur.
Cela peut poser un problème si vous souhaitez extraire la ressource intégrée et l'enregistrer sur le disque dans le même dossier que votre application.
Je recommande soit:
intégration Pas le .exe comme une ressource. Réglez simplement sa copie dans le répertoire de sortie sur Toujours. Puis déployez-le avec votre main.Exe
En l'incorporant comme une ressource mais en l'enregistrant sur le disque, utilisez le dossier temporaire Windows (s'il s'agit d'une seule chose) ou le dossier de données de l'utilisateur (C: \ Documents and Settings \ [user] \ application Data)
Vous pouvez obtenir le dossier approprié pour le courant OS comme ceci:
// for the Windows temp folder
Path.GetTempPath()
// for the user's application data folder
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData))
- 1. Comment puis-je découvrir le "chemin" d'une ressource incorporée?
- 2. Comment puis-je obtenir le chemin du système de fichiers pour une ressource sur iPhone?
- 3. comment obtenir le serveur chemin absolu
- 4. Comment obtenir le chemin d'installation d'une application?
- 5. Comment obtenir le chemin uniquement sans dernier \?
- 6. Obtenir le chemin d'assemblage C#
- 7. Comment cloner une ressource de chemin dans Silverlight?
- 8. Obtenir le chemin d'accès réel du dossier
- 9. obtenir le chemin du fichier txt
- 10. Obtenir le chemin du fichier via javascript
- 11. Obtenir le chemin relatif de flash.net.FileReference;
- 12. NSIS obtenir le chemin du fichier appelant
- 13. C# Comment obtenir le chemin d'installation SQL Server programatically?
- 14. Comment obtenir/définir le chemin du répertoire logique en python
- 15. Comment obtenir le chemin d'accès virtuel complet d'une application ASP.NET
- 16. Comment obtenir le chemin de travail d'une application wcf?
- 17. Comment obtenir le chemin précédent à l'Assemblée Exceuting
- 18. Comment obtenir le chemin d'accès du fichier exécutable du service
- 19. Comment obtenir le chemin de l'application (sans app.exe)?
- 20. Comment obtenir le chemin d'installation SQLSERVER en utilisant C++?
- 21. Comment obtenir le chemin d'un élément dans lxml?
- 22. Comment puis-je obtenir le chemin Python sous Windows?
- 23. Comment obtenir le chemin d'un processus sous Unix/Linux
- 24. Comment obtenir le chemin de bureau en java
- 25. Rails: chemin de ressource de parcours de noms imbriqué
- 26. Ressource imbriquée au niveau racine du chemin d'accès
- 27. Qt4.4 comment obtenir les paramètres utilisateur chemin
- 28. Comment demander une ressource (chemin relatif) à partir du serveur actuel?
- 29. Chemin d'accès relatif dans la ressource de chemin de classe de ressort
- 30. iPhone: Obtenir le chemin du fichier qui est dans le sous-dossier du dossier de ressources
+1 pour soumettre exactement la même chose que j'allais:] (On dirait que la seule solution qui a réellement compris la question ...) –
N'oubliez pas de marquer le fichier exe comme un em ressource litée ... –