2015-02-04 1 views
0

컴파일 된 설치 프로그램의 출력 폴더를 바탕 화면으로 설정하려고합니다. 이 스크립트는 여러 컴퓨터에서 여러 사람이 실행할 수 있기 때문에 동적 스크립트를 사용해야합니다.Inno 설치 파일 이름 접두사를 알 수 없음

OutputDir= "{#Desktop}" 

나는 접두사 userdocs:하지만 userdesktop:를 사용할 수 있어요.

Here is the documentation:

{userdesktop} & {commondesktop} * 
The path to the desktop folder. 

{userdocs} & {commondocs} 
The path to the My Documents folder. 

//Works: 
#define Path "userdocs:Visual Studio 2013\Projects\" 
//Throws "Unknow filename prefix userdesktop:" 
#define Desktop "userdesktop:"; 

는 또한 성공하지 commomdesktop:을 시도했다.

답변

2

이 경우 ISSI 및 해당 Constants을 사용할 수 있습니다.

#define ISSI_IncludePath "..\Inno Setup 5\ISSI\" ;path to ISSI 
#include ISSI_IncludePath+"\_issi.isi" 

[Setup] 
OutputDir={#ISSI_myUserDesktop} 
+0

고마워요! 그래서'{userdesktop}'상수가 설치 될 때 INI 파일에 저장합니다. 이제는 데스크톱 논리 폴더를 재배치 할 수 없기를 희망합니다. – TLama

+0

실제 스크립트를 컴파일하기 전에'{userdesktop} '을 (를) 호출하고 있습니다. ISSI는 일종의 전 처리기와 같습니다. 컴파일 시작시 자체 ISS를 시작하고 실제 스크립트에서 호출 할 수있는 값을 저장합니다. ISSI에서 이전에 실행 된 특정 '[Code]'함수를 스크립트에 포함 시키면 이것이 가능한 일부 문제가 발생합니다. 그러나 그 문제에 대한 해결책도 있습니다. 따라서이 방법은 완벽하지는 않지만 잘 작동합니다. 한계와 가능한 문제를 인식하고 있어야합니다. – RobeN

+0

ISSI 자체를 설치하면 문제가 발생한다고 생각했습니다. 음, 선행 처리기로 작동한다면 괜찮을 것입니다. 그렇지 않으면 똑같이 할 수 있습니다. 각 컴퓨터의 INI 파일에 경로를 저장하고 전 처리기로 읽을 수 있습니다. – TLama