2011-12-08 3 views
1

예를 들어, exe의 전체 파일 경로가 C:\Projects\Executable\Serial Data Streaming Recorder.exe으로 제공되는 경우 exe의 이름을 추출해야합니다. 그게 Serial Data Streaming Recorder이고이 값을 exe의 전체 파일 경로에서 변수에 동적으로 할당하려고합니다. exe의 전체 경로에서 Innosetup 스크립트의 exe 이름을 얻는 방법은 무엇입니까?

수동으로 아래의 예에서와 같이 수행 :

#define ExePath "C:\Projects\Executable\Serial Data Streaming Recorder.exe" 
#define AppName "Serial Data Streaming Recorder" 

내가 동적으로 EXE 파일의 전체 파일 경로에서 변수 AppName에 값 Serial Data Streaming Recorder을 할당 할.

많은 파일에 대해 inno 스크립트의 여러 위치에서이 이름을 사용하고 있습니다. 따라서이 값을 변수에 할당하여 수동으로하고 싶지는 않습니다.

답변

0

음 ... 보통 설치 스크립트에서 절대 경로를 사용하지 않아서 간단히 해결할 수 있습니다.

#define BasicName "Serial Data Streaming Recorder" 
#define ExePath "C:\Projects\Executable\" + BasicName + ".exe" 

을하고 방금 이름을 필요할 때마다 다음 {#BasicName}를 사용 : 당신은 또한 단지 다음과 같이 ExePath를 정의 할 수 있습니다.

더 많은 고급 기능을 수행하기 위해 문자열 조작을 수행 할 수있는 몇 가지 전 처리기 스크립트 기능 (pascalscript가 아님)이 있습니다.

+0

#DEFINE의 MyExePath "C : \ 실행 직렬 데이터 스트리밍 Recorder.exe \"
#DEFINE MyAppExeName ExtractFileName (MyExePath) #DEFINE MyAppName 복사 (MyAppExeName, 1 순위 ("EXE."MyAppExeName) - 1) 나는 이것을 해결한다. ........... – SamuelJames84

+1

@ SamuelJames84 : 내가 말한 것은 ... – Deanna

2

[Code]에서 런타임에 수행하려면 ExtractFileName()을 사용하여 파일 이름과 확장자를 가져올 수 있습니다. 그런 다음 ChangeFileExt() 함수에 공백을 전달하여 확장을 제거 할 수 있다고 생각하지만 그렇지 않은 경우 Pos()Delete()과 같은 표준 문자열 연산을 사용하여 찾아서 제거 할 수 있습니다. 당신이 컴파일시에이 작업을 수행해야하는 경우

, 당신은 시간을 얻기 위해, 파일 이름을 RPos() 자체를 얻을 수 있도록 ExtractFileName()를 사용하여 대부분의 기능이 동일한 이름과 서명이를 ISPP를 사용해야하고 Delete() 그것을 제거 .

+0

답장을 보내 주셔서 감사합니다. ChangeFileExt()를 사용하여 파일 확장명을 삭제할 수 없습니다. " 이름 끝에. 가능한 마지막 4 문자를 삭제하는 몇 가지 방법을 제공, 아직도 나는 명성을 주었다. – SamuelJames84

+0

ISPP에서'RPos()'와'Delete()'를 사용했습니다. – Deanna

관련 문제