2010-01-04 10 views

Odpowiedz

13

Według this page w dokumentacji Inno Setup, wartości zmiennych środowiskowych mogą być pobierane przy użyciu następującej składni:

{%name|default} 
+1

jestem w stanie użyj zmiennych env z jakiegoś powodu. Czy ktoś może wysłać przykład? Dodałem {% OS} do nazwy pliku wyjściowego, a wszystko, co otrzymuję, to oryginalna nazwa pliku z dodanym łańcuchem "{% OS}" - a nie wartość, którą chcę ze środowiska. – Tim

+3

@Tim: Jeśli chcesz użyć zmiennej w ciągu znaków w swoim [code], użyj ExpandConstant ("{% OS}") – panschk

14

wpadłem na ten sam problem, gdy próbuje określić lokalizację źródłową plików w Sekcja [Pliki]. Użyłem funkcji GetEnv do zdefiniowania nowej stałej.

#define Qt5 GetEnv('QT5') 
[Files] 
Source: {#Qt5}\bin\Qt5Concurrent.dll; DestDir: {app}; 
+0

jest to poprawny sposób użycia w definicjach. Notacja {% name | default} nie działa tam. – pHiL

+0

To świetnie, dzięki! Teraz szukam sposobu na wyrażenie wartości domyślnej, ale to dobry początek. – CJBrew

+0

Spróbuj ' #define Qt5 getenv ('QT5') #if Qt5 == "" #define Qt5 "bla" #endif ' –

-1

To może być jeszcze prostsze:

OutputDir={#GetEnv("TEMP")}\ 
+0

To preprocesora makro. Zostało rozwiązane podczas kompilacji! –

-1

Jeśli zmienna TEMP nie istnieje wówczas wartość domyślna będzie używana - ..\..\distr\))))

OutputDir={#StringChange(GetEnv("TEMP")+"\", StringChange(GetMD5OfString(GetEnv("TEMP")), "d41d8cd98f00b204e9800998ecf8427e", "\"), "..\..\distr\")} 
+0

To jest makro preprocesora. Zostało rozwiązane podczas kompilacji! –