запускать исполняемое приложение из ресурсов, не сохраняя его где-либо - PullRequest
2 голосов
/ 24 ноября 2011

Если у меня есть файл (appres.exe) в ресурсах моего VB 2008 Application (myVbApp.exe), как я могу начать с него?Я не хочу сохранять его (appres.exe) в другом месте перед запуском, я хочу только myVbApp.exe, больше никаких файлов.

Ответы [ 2 ]

3 голосов
/ 24 ноября 2011

Извлеките EXE из ресурсов:

   Dim l as System.IO.Stream = Reflection.Assembly.GetEntryAssembly.GetManifestResourceStream(String.Format("{0}.{1}", "ApplicationProjectName", "YourExeName"))

Затем сохраните его во временную папку - пример метода:

Private Sub SaveStreamToFile(ByVal p_stream As Stream, ByVal p_fileName As String)
    Dim l_streamWriter As System.IO.FileStream = System.IO.File.Create(p_fileName)

    Try
        Dim l_bytes(65536) As Byte
        Dim l_offset As Integer = 0
        Dim l_readBytes As Integer

        Do
            l_readBytes = p_stream.Read(l_bytes, 0, 65536)
            l_streamWriter.Write(l_bytes, 0, l_readBytes)

            l_offset += l_readBytes

        Loop While (l_readBytes > 0)
        Debug.WriteLine("Num Of bytes Read: " + l_offset.ToString)

    Catch ex As Exception
       'log error
    Finally
        p_stream.Close()
        l_streamWriter.Close()
    End Try
End Sub

Теперь, когда вы получили EXE во временной папке, выможет регулярно обедать его, используя:

Process.Start("EXE_PATH")

и удалить его, как только процесс будет завершен.

0 голосов
/ 24 февраля 2016

Вы можете попробовать это:

 Dim SetupPath As String = Application.StartupPath & "\appres.exe"
            Using sCreateMSIFile As New FileStream(SetupPath, FileMode.Create)
                sCreateMSIFile.Write(My.Resources.yourexefilename, 0, My.Resources.Yourexefilename.Length)
            End Using
            Process.Start(SetupPath)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...