S Chase
S Chase

Reputation: 43

Copy Resources to disk

First attempt at a VB.NET application. I am trying to create an application to copy standard configurations for an application then customize certain settings for that user. I have most of the application working fine but I'm having an issue with resource files.

Because the number of files may change I'm using a sub-folder for my resources. I have the files set to content and always copy. I can get the following code to work in debug but it seems I'm not doing it properly for build.

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

I have attempted several ways of copying the data but I can find nothing compatible, like the following.

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

Can someone point me in the proper and correct direction to do this? Currently the file types are 1 .vbs and 1 .exe.config file but I may need to add different file types in the future.

Upvotes: 1

Views: 8856

Answers (2)

maxedev
maxedev

Reputation: 941

It seems the issue is this line For Each strFile In Directory.GetFiles(".\Files")

.\Files is referring to a relative path that doesn't exist when you move the .exe.

Upvotes: 0

matzone
matzone

Reputation: 5719

About this code ..

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

If you access some special folder such as Desktop and retrieve from app resource , you make it like this

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

Upvotes: 1

Related Questions