[英]Setting PGPASSWORD environment variable for Postgres (psql) process executed by Inno Setup
[英]Inno Setup - Setting Java Environment Variable
我正在使用Inno Setup為正在處理的項目制作安裝程序,並且需要它來設置java環境變量,以便在他們運行cmd時不會出現Java not found錯誤或類似錯誤。
我發現了一些其他與Inno Setup和設置環境變量有關的帖子,但是有人知道該實例的特定知識嗎?
假設Java安裝在其默認位置的程序文件/ Java中,則應在您的情況下執行以下操作:
[Registry]
; set PATH
Root: HKCU; Subkey: "Environment"; ValueType:string; ValueName:"PATH"; ValueData:"{olddata};{pf}\Java\bin"; Flags: preservestringtype
; set JAVA_HOME
Root: HKCU; Subkey: "Environment"; ValueType:string; ValueName:"JAVA_HOME"; ValueData:"{pf}\Java"; Flags: preservestringtype
[Setup]
; Tell Windows Explorer to reload the environment
ChangesEnvironment=yes
我不確定要設置哪個環境變量-PATH或JAVA_HOME-因此我將它們都添加了。
不需要更改PATH,因為Java安裝程序傾向於將自身添加到路徑中。 IIRC會將java.exe和javaw.exe復制到系統目錄之一。
加上@Joni的答案,您可以從注冊表中獲取Java安裝目錄,並使用腳本常量來設置您的環境變量:
(編輯:感謝@TLama進行代碼更正!)
[Registry]
Root: HKCU; Subkey: "Environment"; ValueType:string; ValueName:"JAVA_HOME"; ValueData:"{code:GetJava32Path|6}"; Flags: preservestringtype
[Code]
const
RegKeyJRE = 'SOFTWARE\JavaSoft\Java Runtime Environment\';
function GetJava32Path(MinVersion: string): string;
var
I: Integer;
Path: string;
Versions: TArrayOfString;
begin
Result := '';
if RegGetSubkeyNames(HKLM, RegKeyJRE, Versions) then
for I := 0 to GetArrayLength(Versions)-1 do
if (Versions[I][2] = '.') and (Versions[I][3] >= MinVersion) and
RegQueryStringValue(HKLM32, RegKeyJRE + Versions[I], 'JavaHome', Path) then
begin
Result := Path;
Exit;
end;
end;
(注意,我遠不是Pascal腳本專家,代碼可能會好得多,盡管現在它已由@TLama糾正:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.