2010-01-04 37 views

Trả lời

13

Theo this page trong tài liệu cài đặt Inno, giá trị của biến môi trường có thể được lấy ra bằng cách sử dụng cú pháp sau:

{%name|default} 
+1

Tôi không thể sử dụng các biến env vì lý do nào đó. Ai đó có thể đăng một ví dụ? Tôi đã thêm {% OS} vào tên tệp đầu ra và tất cả những gì tôi lấy lại là tên tệp gốc có chuỗi "{% OS}" được thêm vào - không phải giá trị tôi muốn từ môi trường. – Tim

+3

@Tim: Nếu bạn muốn sử dụng biến trong một chuỗi bên trong [code] của bạn, hãy sử dụng ExpandConstant ('{% OS}') – panschk

14

Tôi chạy vào cùng một vấn đề khi cố gắng xác định vị trí nguồn của các file trong [Tập tin]. Tôi đã sử dụng hàm GetEnv để xác định một hằng số mới.

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

đây là cách chính xác để sử dụng trong định nghĩa. ký hiệu {% name | default} không hoạt động ở đó. – pHiL

+0

Thật tuyệt vời, cảm ơn! Bây giờ tôi đang tìm cách để thể hiện một giá trị mặc định, nhưng đó là một khởi đầu tốt. – CJBrew

+0

Hãy thử '' #define Qt5 getenv ('QT5') # nếu Qt5 == "" #define Qt5 "blah" #endif '' –

-1

Nó có thể được dễ dàng hơn:

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

Đó là một macro tiền xử lý. Nó được giải quyết trên thời gian biên dịch! –

-1

Nếu biến TEMP không tồn tại thì giá trị mặc định sẽ được sử dụng - ..\..\distr\))))

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

Đó là macro tiền xử lý. Nó được giải quyết trên thời gian biên dịch! –

Các vấn đề liên quan