2016-06-24 10 views
0

VB 응용 프로그램의 리소스에서 파일 경로를 찾으려고합니다. 응용 프로그램은 간단합니다.실행할 명령에 임베디드 리소스 추가

자동으로 .7z 파일을 자동 압축 해제 및 실행 파일로 만듭니다. 이, 7zS.sfx, config.txt 파일과 .7z 아카이브 즉 Fruits.7z에

3 부분

7zS.sfx와 config.txt 파일은 변경하지 않습니다, 그래서 내가 그들을 포함 바라고의 .7z 아카이브가 응용 프로그램으로 드래그됩니다. 복사/B 자원의 PATH \ 7zS.sfx + 자원의 PATH \ config.txt 파일 + C : \ 사용자 \ % 사용자 이름 % \ 바탕 화면 \ 과일 \ Fruit_List.7z 과일

지금 내가있는 Section 명령을 실행해야합니다. exe

My.Resource.config.txt로 여러 번 시도해 보았습니다. 파일을 바이트로로드합니다. 나는 명령 프롬프트가 그것도 건설 후 처리 할 것입니다 손길이 닿지 않은 파일이 필요합니다.

MyUtilities.RunCommandCom("copy /b c:\FruitTemp\7zS.sfx + c:\FruitTemp\config.txt + C:\Users\%username%\Desktop\Fruit\FruitArchive.7z c:\users\%username%\desktop\Fruit.exe", "/C", True) 


Shared Sub RunCommandCom(command As String, arguments As String, permanent As Boolean) 
     Dim p As Process = New Process() 
     Dim pi As ProcessStartInfo = New ProcessStartInfo() 
     pi.Arguments = " " + If(permanent = True, "/K", "/C") + " " + command + " " + arguments 
     pi.FileName = "cmd.exe" 
     p.StartInfo = pi 
     p.Start() 
    End Sub 

임베디드 리소스는 이제 위의 명령에서 볼 수있는 것처럼 바이트를 통해 실행되고 임시 위치에 저장됩니다. 그러나이 명령은 실행되지 않습니다. 구문이 틀렸다는 내용입니다.

+0

리소스는 대개 응용 프로그램에 포함됩니다. 외부 응용 프로그램에서 사용할 수 있으려면 먼저 바이트 배열을 파일에 기록해야합니다. –

+0

임베디드 파일을 임시 위치에 쓴 다음 해당 임시 위치를 기반으로 명령을 실행 하시겠습니까? 어떻게해야 할 지 알려주시겠습니까? – MrAnderson1992

+0

'File.WriteAllBytes()'는 좋은 시작이다. –

답변

0

첫째, 런타임에 리소스 파일이 없습니다. 요점은 리소스가 EXE의 바이너리 코드로 컴파일된다는 것입니다. 둘째, 'config.txt'파일을 리소스에 추가하면 리소스 속성은 My.Resources.config이됩니다. 점에 점이있는 속성 이름을 사용할 수 없습니다.

따라서 속성의 유형을 결정한 다음 적절한 방식으로 파일에 저장해야합니다. String 또는 Byte() 일 수 있으므로 File.WriteAllText 또는 File.WriteAllBytes으로 전화 할 수 있습니다.

+0

예 죄송합니다. 실수였습니다. My code는 My.Resources.config를 읽습니다. – MrAnderson1992