2017-02-07 2 views
0

У меня есть однократное приложение, которое развертывается на сервере (общий сетевой ресурс), есть ли способ программно извлечь данные из DLL-файлов из файлов .dll.deploy. После запуска приложения он преобразуется в dll и в папку user/appdata/local/..., но мне нужен способ извлечения dll без запуска приложения.Программно извлекать .dlls из приложения clickonce .deploy файлы

Спасибо за помощь.

ответ

0

Просто переименуйте файлы, опуская суффикс .deploy, и все готово.

Поскольку эта задача может стать немного утомительной - в зависимости от количества файлов в вашем пакете ClickOnce - вы можете использовать инструмент переименования файлов.

Обновление: Я просто заметил, что вы просили сделать это программно. Это делает его еще проще, так как вам не нужно беспокоиться о поиске инструмента для переименования файлов:

public class Program 
{ 
    private const string SourcePath = "\\\\ClickOnceDeployDir"; 

    private const string TargetPath = "C:\\Users\\UserName\\Documents\\ClickOnceTargetDir"; 

    public static void Main(string[] args) 
    { 
     var sourceDirectory = new DirectoryInfo(SourcePath); 
     var targetDirectory = new DirectoryInfo(TargetPath); 
     // you can omit this step if you would like to do the renaming in-place 
     Copy(sourceDirectory, targetDirectory); 

     foreach (var file in targetDirectory.GetFiles("*.deploy", SearchOption.AllDirectories)) 
     { 
      var directoryName = file.DirectoryName; 
      if (directoryName != null) 
      { 
       // here it is: rename the file 
       file.MoveTo(Path.Combine(directoryName, Path.GetFileNameWithoutExtension(file.Name))); 
      } 
     } 
    } 

    private static void Copy(DirectoryInfo sourceDirectory, DirectoryInfo targetDirectory) 
    { 
     foreach (var file in sourceDirectory.GetFiles()) 
     { 
      file.CopyTo(Path.Combine(targetDirectory.FullName, file.Name)); 
     } 

     foreach (var directory in sourceDirectory.GetDirectories()) 
     { 
      Copy(directory, targetDirectory.CreateSubdirectory(directory.Name)); 
     } 
    } 
} 
Смежные вопросы