JavaPackager修改exe安裝檔的語言選項實作
編輯日期:2025-05-25
發布日期:2025-05-25
軟體開發
JAVA

前言:IntellijIdea的JavaFx專案使用JavaPackager的包檔流程教學

本文內容主要參考JavaPackager的Git Readme

這邊來做個簡單的修改Inno Setup安裝精靈內容的範例:加上中文語言的語言選擇。

簡單來說,Inno Setup的安裝精靈是透過.iss來產生的,而JavaPackager會產生預設的.iss。

如果要自訂內容,必須在專案目錄下面 ${assetsDir}/windows/ (assetsDir沒設定的情況會是assets/windows) 建立.vtl的檔案,

我這邊請GPT幫我轉換預設.iss檔案之後的內容如下(這是另一個展示的專案Fx-Demo,基本上大同小異):

#set( $MyAppName = "Fx-Demo" )
#set( $MyAppVersion = "1.0-SNAPSHOT" )
#set( $MyAppPublisher = "ACME" )
#set( $MyAppURL = "" )
#set( $MyAppExeName = "Fx-Demo.exe" )
#set( $MyAppFolder = "Fx-Demo" )
#set( $MyAppLicense = "" )
#set( $MyAppIcon = "C:\\Side_Project\\Fx-Demo\\assets\\windows\\Fx-Demo.ico" )
#set( $MyShortcutName = "Fx-Demo" )

[Setup]
AppId=${MyAppName}
AppName=${MyAppName}
AppVersion=${MyAppVersion}
AppVerName=${MyAppName} ${MyAppVersion}
AppPublisher=${MyAppPublisher}
AppPublisherURL=${MyAppURL}
AppSupportURL=${MyAppURL}
AppUpdatesURL=${MyAppURL}
DefaultDirName={autopf}\\${MyAppFolder}
DisableDirPage=no
DefaultGroupName=${MyAppName}
DisableProgramGroupPage=no
DisableFinishedPage=no
DisableWelcomePage=yes
PrivilegesRequired=admin
PrivilegesRequiredOverridesAllowed=commandline
LicenseFile=${MyAppLicense}
SetupIconFile=${MyAppIcon}
UninstallDisplayIcon={app}\\${MyAppExeName}
Compression=lzma
SolidCompression=yes
ArchitecturesInstallIn64BitMode=x64

[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"
Name: "chinese"; MessagesFile: "compiler:Languages\\ChineseTraditional.isl"

[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked

[Registry]

[Files]
Source: "C:\\Side_Project\\Fx-Demo\\target\\Fx-Demo\\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs

[Icons]
Name: "{autoprograms}\\${MyAppName}"; Filename: "{app}\\${MyAppExeName}"; IconFilename: "{app}\\Fx-Demo.exe"
Name: "{autodesktop}\\${MyShortcutName}"; Filename: "{app}\\${MyAppExeName}"; IconFilename: "{app}\\Fx-Demo.exe"; Tasks: desktopicon

[Run]

[Code]

function GetInstallLocation(): String;
var
    unInstPath: String;
    installLocation: String;
begin
    unInstPath := ExpandConstant('Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\${MyAppName}_is1');
    installLocation := '';
    if not RegQueryStringValue(HKLM, unInstPath, 'InstallLocation', installLocation) then
        RegQueryStringValue(HKCU, unInstPath, 'InstallLocation', installLocation);
    Result := RemoveQuotes(installLocation);
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
    if CurStep = ssInstall then
    begin
        // 你可以在這裡加你的安裝步驟邏輯
    end;
end;

上面的內容裡面,我加了Name: "chinese"; MessagesFile: "compiler:Languages\\ChineseTraditional.isl",這個就是新增中文語言選擇的設定,與之對應的是必須在Inno Setup的目錄下面新增中文的.isl檔案,可以在官網找語言下載,然後放到Inno Setup安裝目錄下面的\Languages裡面即可。

如果是亂碼的話,要記得把檔案轉成UTF-8-BOM編碼。

也可以看到文案其實就在.isl檔案裡面,更改就可以調整。其他的安裝精靈設置也是只要改iss檔案就可以,這邊就以這個案例做個示範,再請大家發揮自己的想像力與創造力了XD。