innosetup : [코드] 섹션에서 AppName을 얻습니다
-
20-09-2019 - |
문제
사용하는 설치 프로그램을 만들고 있습니다 innosetup, 및 일부 사용자 정의 처리기 작성 [Code]
부분. 핸들러 중 하나에서 나는 AppName
(또는 잠재적으로, 다른 매개 변수의 값) [Setup]
부분. 내가 이것을 할 수있는 방법이 있습니까? 나는 보았다 선적 서류 비치, 그러나 나는 이것을 할 수있는 것을 찾지 못했습니다. 우리의 innosetup 파일은 실제로 빌드 프로세스에 의해 생성되며, 모든 프로그램 사이에 공통적이고 프로그램에 따라 다릅니다. 따라서 각 프로그램의 코드에서 상수를 정의해야합니다. 이 작업을 수행하는 편리한 방법이 있습니까?
나는 같은 것을 찾고 있습니다
MyString := ExpandConstant('{AppName}');
제외하고 {AppName}
정의 된 상수가 아닙니다. 정의 된 매개 변수를 쿼리하는 방법이 있습니까? [Setup]
부분?
해결책
설치 시간 값이 아닌 빌드 타임 상수입니다. 그래서 당신은 사용할 수 있습니다 이노 설정 전 처리기 이러한 상수를 정의하기 위해 애드온. (당신은 그것을 통해 쉽게 설치할 수 있습니다 QuickStart 팩).
상수 정의 :
#define AppName "Excellent Foo App"
상수를 사용하십시오 [Setup]
:
AppName={#AppName}
그리고 파스칼 코드에서는 구문을 완전히 확신하지 못하고 다음과 같은 것입니다.
MyString := {#AppName}
업데이트: 내 스크립트 중 하나가 사용되는 것을 깨달았습니다 {#emit SetupSetting("AppId")}
더 쉽습니다. 브라이언의 해결책 또한이 방법을 발견했으며 더 좋습니다.
다른 팁
Craig의 답변에서 영감을 얻은 저는 Inno 설정 전처리 서 문서를보고있었습니다 (Istool에서는 내가 찾은 한 온라인에서 사용할 수 없음). SetupSetting
전처리에서 기능.
그렇게 사용할 수 있습니다.
MyString := '{#SetupSetting("AppName")}';
그리고 길게 [Setup]
섹션은 이것이 사용되는 장소 앞에 나타납니다 (ISPP는 단 하나의 패스 일 뿐이며) AppName
, 이것은 추출하려는 각 설정에 대해 추가 매크로를 정의하지 않고 원하는 결과를 제공합니다.