将资源复制到磁盘

时间:2013-05-29 14:40:56

标签: vb.net visual-studio-2012

首次尝试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文件,但我可能需要在将来添加不同的文件类型。

2 个答案:

答案 0 :(得分:0)

问题似乎是这一行For Each strFile In Directory.GetFiles(".\Files")

。\ Files指的是移动.exe时不存在的相对路径。

答案 1 :(得分:0)

关于此代码..

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

如果您访问某些特殊文件夹(例如Desktop)并从应用资源中检索,则可以像这样进行

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