2013-05-29 4 views
0

Первая попытка приложения VB.NET. Я пытаюсь создать приложение для копирования стандартных конфигураций для приложения, а затем настроить определенные параметры для этого пользователя. У меня большая часть приложения работает нормально, но у меня проблема с файлами ресурсов.Копирование ресурсов на диск

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

For Each strFile In Directory.GetFiles(".\Files") 

     If Path.GetExtension(Path.GetFileName(strFile)) = ".vbs" Then 
      strDestination = strDataPath & "Scripts\" 
     Else 
      strDestination = strDataPath 
     End If 
     If Not Directory.Exists(strDestination) Then 
      Directory.CreateDirectory(strDestination) 
     End If 

     If My.Settings.chkForceOverwrite = True Then 
      Try 
       File.Copy(strFile, strDestination & Path.GetFileName(strFile), True) 
      Catch ex As Exception 
       Console.WriteLine(ex.Message) 
      End Try 
     Else 
      Try 
       File.Copy(strFile, strDestination & Path.GetFileName(strFile), False) 
      Catch ex As Exception 
       Console.WriteLine(ex.Message) 
      End Try 
     End If 
    Next 

Я попытался несколько способов копирования данных, но я не могу найти ничего совместимого, например следующее.

Dim strFileName As String = Path.GetFileNameWithoutExtension(strFile) 
File.WriteAllBytes(strDestination & strFile, My.Resources.strFileName, True) 

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

+0

какой результат от этого кода? – matzone

+0

Вы имеете в виду File.WriteAllBytes? 'strFileName' не является членом 'Resources' –

+0

Нет, первый код .. это делает нежелательный результат? – matzone

ответ

0

О коде ..

File.WriteAllBytes(strDestination & strFile, My.Resources.strFileName, True) 

Если доступ к некоторой специальной папке, такие как Desktop и извлечь из приложений ресурса, вы сделаете это, как этот

File.WriteAllBytes(My.Computer.FileSystem.SpecialDirectories.Desktop & "\" & strFile, My.Resources.ResourceManager.GetObject(strFileName), True) 
+0

Я попытался использовать File.WriteAllBytes вместо копии, потому что это выглядит как правильный способ выполнить это, но я получаю «strFileName» не является членом «Ресурсов» как ошибка. Как я могу исправить это или обойти его? –

+0

@SChase: он обновляется .. попробуйте – matzone

+0

Выглядит хорошо, после того как я снял «, True», у него больше нет ошибки. Как я могу исправить массив файлов, чтобы посмотреть на \ Files в ресурсах? Для каждого strFile В Directory.GetFiles (". \ Files") Это станет для каждого strFile InMy.Resources.ResourceManage r.GetResourceSet ("\ Files) или что-то в этом роде? –

0

Кажется, проблема эта линия For Each strFile In Directory.GetFiles(".\Files")

. \ Files имеет в виду относительный путь, который не существует, когда вы перемещаете EXE-файл.

+0

Это относительный путь внутри .exe как сохраненный ресурс. Я просто не могу найти ни одного ответа о том, как надежно получить доступ к ресурсам. –

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