簡體   English   中英

Inno Setup-設置Java環境變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM