none
how Run an exe from resources in VB .NET RRS feed

Answers

  • You are better off extracting the executable from resource and use Process.Run. Otherwise you would need something like the following which may or may not work dependent on the executable e.g. was it built in Visual Studio or not.

    Imports System.IO
    Public Class Demo
        Public Shared Sub RunSearch(ByVal pPath As String, ByVal pText As String)
            'Get the current assembly
            Dim assembly As Reflection.Assembly = Reflection.Assembly.GetExecutingAssembly()
    
            'Get the resource stream
            Dim resourceStream As Stream = assembly.GetManifestResourceStream("path.executable name")
    
            'Verify the internal exe exists
            If resourceStream Is Nothing Then
                Return
            End If
    
            'Read the raw bytes of the resource
            Dim resourcesBuffer(CInt(resourceStream.Length) - 1) As Byte
    
            resourceStream.Read(resourcesBuffer, 0, resourcesBuffer.Length)
            resourceStream.Close()
    
            'Load the bytes as an assembly
            Dim exeAssembly As Reflection.Assembly = Reflection.Assembly.Load(resourcesBuffer)
            Dim args() As String = {pPath, pText}
            Dim parameters = New Object() {args}
            Try
                exeAssembly.EntryPoint.Invoke(Nothing, parameters)
            Catch
                '
                ' Handle exception
                '
            End Try
        End Sub
    End Class
    


    Please remember to mark the replies as answers if they help and unmark them if they provide no help, this will help others who are looking for solutions to the same or similar problem. Contact via my Twitter (Karen Payne) or Facebook (Karen Payne) via my MSDN profile but will not answer coding question on either.
    VB Forums - moderator
    profile for Karen Payne on Stack Exchange, a network of free, community-driven Q&A sites

    Wednesday, January 24, 2018 1:36 PM
    Moderator

All replies

  • You cannot, a resource is an inclusion in an Exe. 

    This was in past a short while used to copy programs from others and wrapped that inside an own program and then sell it as an own program.

    But it was only short that was possible. 

    Be aware that an .Net assembly is not direct a native executable. It only contains the .Net ILS code to be executed by the .Net framework runtime 


    Success Cor

    Wednesday, January 24, 2018 1:29 PM
  • You are better off extracting the executable from resource and use Process.Run. Otherwise you would need something like the following which may or may not work dependent on the executable e.g. was it built in Visual Studio or not.

    Imports System.IO
    Public Class Demo
        Public Shared Sub RunSearch(ByVal pPath As String, ByVal pText As String)
            'Get the current assembly
            Dim assembly As Reflection.Assembly = Reflection.Assembly.GetExecutingAssembly()
    
            'Get the resource stream
            Dim resourceStream As Stream = assembly.GetManifestResourceStream("path.executable name")
    
            'Verify the internal exe exists
            If resourceStream Is Nothing Then
                Return
            End If
    
            'Read the raw bytes of the resource
            Dim resourcesBuffer(CInt(resourceStream.Length) - 1) As Byte
    
            resourceStream.Read(resourcesBuffer, 0, resourcesBuffer.Length)
            resourceStream.Close()
    
            'Load the bytes as an assembly
            Dim exeAssembly As Reflection.Assembly = Reflection.Assembly.Load(resourcesBuffer)
            Dim args() As String = {pPath, pText}
            Dim parameters = New Object() {args}
            Try
                exeAssembly.EntryPoint.Invoke(Nothing, parameters)
            Catch
                '
                ' Handle exception
                '
            End Try
        End Sub
    End Class
    


    Please remember to mark the replies as answers if they help and unmark them if they provide no help, this will help others who are looking for solutions to the same or similar problem. Contact via my Twitter (Karen Payne) or Facebook (Karen Payne) via my MSDN profile but will not answer coding question on either.
    VB Forums - moderator
    profile for Karen Payne on Stack Exchange, a network of free, community-driven Q&A sites

    Wednesday, January 24, 2018 1:36 PM
    Moderator
  • There is no point. First, the executable would need to be extracted and written as a file before it could be executed. Second, you would probably need to write it somewhere other than Program Files, which is protected by UAC. Third, some security software might consider it to be malware or a virus and block the operation.

    Unless you are creating an installer application I would abandon this idea and simply include the executable as just another file in your application.


    Paul ~~~~ Microsoft MVP (Visual Basic)

    Wednesday, January 24, 2018 2:37 PM