原創(chuàng)|產(chǎn)品更新|編輯:鄭恭琳|2021-02-24 10:22:54.300|閱讀 1140 次
概述:install4j 9.0現(xiàn)在可以自定義安裝程序的外觀。默認(rèn)情況下,外觀設(shè)置為FlatLaf,這是一種跨平臺(tái)外觀,可自動(dòng)檢測(cè)暗或亮模式。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門(mén)軟控件火熱銷售中 >>
install4j 9.0引入了以下值得注意的新功能:
1、現(xiàn)在可以自定義安裝程序的外觀。默認(rèn)情況下,外觀設(shè)置為FlatLaf,這是一種跨平臺(tái)外觀,可自動(dòng)檢測(cè)暗或亮模式。
您可以在新的“外觀”步驟中調(diào)整外觀。您可以在兩個(gè)內(nèi)置主題(用于亮模式)和兩個(gè)內(nèi)置主題(用于暗模式)之間進(jìn)行選擇。在macOS,Windows和Linux上實(shí)現(xiàn)了自動(dòng)檢測(cè)明暗模式。在macOS上,安裝程序運(yùn)行時(shí)也會(huì)檢測(cè)到在暗模式和亮模式之間切換;在Windows上,只有JetBrains Runtime支持此功能。您可以選擇禁用自動(dòng)檢測(cè),而僅使用亮或暗模式。
除了內(nèi)置主題之外,您還可以為IntelliJ IDEA選擇主題。這些主題基于JSON文件,這些文件定義了UI元素的顏色和其他屬性。使用此機(jī)制,您可以為安裝程序UI開(kāi)發(fā)自己的自定義主題。
包含主題的JAR文件必須在“自定義代碼”步驟中添加。之后,您可以使用主題選擇器選擇IntelliJ主題的JSON文件的資源路徑。
為了允許用戶在暗和亮模式之間手動(dòng)切換,已添加了“暗模式切換器”表單組件,該組件也可以在樣式中使用。
如果僅顯示圖標(biāo),則暗模式切換器按鈕外觀平坦。這使其成為頁(yè)腳區(qū)域的一個(gè)很好的補(bǔ)充,此處以“青色”燈光主題顯示。
為了在同一屏幕上支持明暗模式,所有顏色屬性現(xiàn)在都支持明暗變體。如果您開(kāi)發(fā)自定義代碼,則該代碼將自動(dòng)用于java.util.Color類型的所有屬性。
在顏色編輯器中,您可以選擇是否為明暗模式提供單獨(dú)的顏色。對(duì)于自定義代碼,如果配置了不同的變體,則顏色實(shí)例將是派生類,該主題將在主題更改期間無(wú)縫切換其顏色分量值。
盡管不建議這樣做,但仍支持JRE內(nèi)置的Java本機(jī)外觀,因?yàn)樗cmacOS的最新版本和Windows上的HiDPI分辨率的部分版本不能很好地配合。
最后,您現(xiàn)在可以通過(guò)實(shí)現(xiàn)com.install4j.api.laf.LookAndFeelHandler并在“自定義代碼”步驟上添加類以及外觀的依賴項(xiàng)來(lái)集成自己的外觀。LookAndFeelHandler擴(kuò)展了com.install4j.api.laf.LookAndFeelEnhancer,其中包含UI元素的方法,其中運(yùn)行時(shí)需要從外觀上進(jìn)行特殊協(xié)作,例如創(chuàng)建三態(tài)復(fù)選框。您可以覆蓋這些方法的默認(rèn)實(shí)現(xiàn),以在install4j的上下文中提高外觀的保真度。
“customCode”示例項(xiàng)目包含一個(gè)自定義外觀的示例。
最后,您可能已經(jīng)從上面的屏幕截圖中注意到,install4j IDE現(xiàn)在也正在使用FlatLaf。請(qǐng)考慮在GitHub上主演FlatLaf。
在首選項(xiàng)對(duì)話框中,仍然可以使用install4j IDE的暗模式和亮模式設(shè)置。
2、用于Amazon Corretto和Azul Zulu的JDK提供程序已添加到install4j。要使用這些JDK,您不再需要在所有必需的平臺(tái)上預(yù)先創(chuàng)建捆綁包,而可以在安裝過(guò)程中讓install4j完成。
除Liberica之外,Azul Zulu是JavaFX的另一個(gè)選項(xiàng),用于最新的Java版本。它還提供了沒(méi)有JavaFX的Java 8,從而使JRE捆綁包變得更小。此外,最近的發(fā)行版已經(jīng)包含了針對(duì)具有Apple Silicon的計(jì)算機(jī)的macos-aarch64目標(biāo)。
Amazon Corretto是一個(gè)OpenJDK發(fā)行版,致力于將來(lái)自主分支機(jī)構(gòu)和其他來(lái)源的其他修補(bǔ)程序和修補(bǔ)程序納入LTS版本。最近,他們也開(kāi)始增加對(duì)最新功能版本的支持。
3、install4j現(xiàn)在可以為macOS生成通用二進(jìn)制文件,以同時(shí)支持Intel和Apple Silicon。在媒體向?qū)е校梢栽凇鞍惭b選項(xiàng)”步驟中選擇“通用二進(jìn)制文件”體系結(jié)構(gòu)。
通用二進(jìn)制文件不僅會(huì)為啟動(dòng)器和安裝程序生成,還會(huì)為JRE軟件包生成。僅當(dāng)所選的JDK提供已出版MacOS的-amd64和所選版本MacOS的-aarch64架構(gòu)都有效。然后install4j將下載兩個(gè)歸檔并將它們合并到通用JRE軟件包中。
4、現(xiàn)在,JRE捆綁是默認(rèn)設(shè)置。自從Java 9和從Oracle JRE發(fā)行版到OpenJDK發(fā)行版的轉(zhuǎn)變以來(lái),公共JRE安裝的概念變得越來(lái)越不重要。這就是為什么現(xiàn)在使用當(dāng)前LTS版本的AdoptOpenJDK配置新項(xiàng)目,并且默認(rèn)情況下將新媒體文件配置為捆綁JRE的原因。
現(xiàn)在,已在“General Settings->JRE bundles”步驟下訂購(gòu)了舊的“Java版本”步驟,并且其最低Java版本設(shè)置已成為可選步驟。如果為空,則所需的Java版本是所選JDK的主版本。現(xiàn)在,JDK版本在JDK提供程序中的語(yǔ)法為<major version>/<provider-specific version>。
從install4j 9開(kāi)始,您可以指定特定于提供程序的版本“latest”以使用所選主要版本的最新版本。由于媒體文件需要特定的平臺(tái),因此該機(jī)制會(huì)針對(duì)每個(gè)媒體文件分別搜索該平臺(tái)可用的最新版本。您還可以通過(guò)選擇主要版本的文件夾節(jié)點(diǎn),在發(fā)行選擇對(duì)話框中插入此版本字符串。
對(duì)于已配置的JDK,現(xiàn)在可以使用“顯示所有模塊”按鈕檢查所有可用的模塊。以前,您只能看到JRE包中將包含哪些模塊。該功能將繼續(xù)通過(guò)“顯示包含的模塊”按鈕顯示。
在install4j 9中,無(wú)需為腳本編譯和腳本編輯器配置JDK,因?yàn)闉?/span>JRE軟件包配置的JDK將自動(dòng)用于該目的。如果不捆綁JDK,則將與install4j一起運(yùn)行的JRE作為后備,并且您仍然可以在Java編輯器設(shè)置對(duì)話框中手動(dòng)配置JDK。
對(duì)于共享的JRE捆綁包,引入了共享ID。這將共享限制在您自己定義和控制的項(xiàng)目范圍內(nèi)。這也處理了Java 9之后世界中JRE的可變模塊內(nèi)容。共享ID應(yīng)該以您控制的域名開(kāi)頭,并且必須由發(fā)布共享JRE的媒體文件以及Java搜索序列要查找共享JRE的媒體文件進(jìn)行配置。
5、警告已得到改善。現(xiàn)在將警告計(jì)數(shù)打印在構(gòu)建摘要中,如果有警告,則文本顏色為橙色。對(duì)于命令行構(gòu)建,如果傳遞了--fail-on-warning命令行參數(shù)或在Gradle,Ant和Maven插件中設(shè)置了相應(yīng)的屬性,則可以在這種情況下強(qiáng)制構(gòu)建失敗。
可以使用特殊的編譯器變量來(lái)逐個(gè)警告顯示警告。如果您以詳細(xì)模式構(gòu)建,則在每次警告后都會(huì)打印一條說(shuō)明,說(shuō)明如何禁用它。在install4j IDE中,該描述帶有用于定義相應(yīng)編譯器變量的超鏈接。
從上面的屏幕快照中可以看到,現(xiàn)在在構(gòu)建過(guò)程中會(huì)打印腳本編譯警告。這使得消除新的過(guò)時(shí)以及在整個(gè)項(xiàng)目中發(fā)現(xiàn)可能的錯(cuò)誤變得更加容易。
6、一個(gè)Maven插件已添加。以前,只能通過(guò)第三方插件進(jìn)行Maven集成。現(xiàn)在,當(dāng)發(fā)布新版本的install4j時(shí),最新功能將立即可用。
首先,請(qǐng)參閱“hello”示例項(xiàng)目中的pom.xml文件。在插件的配置部分,您可以添加可以傳遞給命令行編譯器的所有選項(xiàng)。
<plugin> <groupId>com.install4j</groupId> <artifactId>install4j-maven</artifactId> <version>9.0</version> <executions> <execution> <id>install4j</id> <phase>package</phase> <goals> <goal>compile</goal> </goals> <configuration> <installDir>/path/to/install4j</installDir> <projectFile>${project.basedir}/hello.install4j</projectFile> </configuration> </execution> </executions> </plugin>
在上面的示例中,指定了install4j安裝目錄。或者,您可以在settings.xml文件中執(zhí)行此操作,還可以在其中定義許可證密鑰和密鑰庫(kù)密碼。
<profiles> <profile> <id>development</id> <properties> <install4j.home>/path/to/install4j</install4j.home> <install4j.licenseKey>CHANGEME</install4j.licenseKey> <install4j.winKeystorePassword>SECRET</install4j.winKeystorePassword> <install4j.macKeystorePassword>SECRET</install4j.macKeystorePassword> </properties> </profile> </profiles> <activeProfiles> <activeProfile>development</activeProfile> </activeProfiles>
除了編譯項(xiàng)目之外,您還可以使用create-jre-bundle Mojo預(yù)先創(chuàng)建JRE包。有關(guān)更多詳細(xì)信息,請(qǐng)參見(jiàn)文檔。
7、macOS單捆綁包歸檔文件現(xiàn)在具有可配置的設(shè)置應(yīng)用程序。用戶首次運(yùn)行新的歸檔文件安裝或更新時(shí),將啟動(dòng)配置的安裝程序。這意味著您可以使用屏幕和操作來(lái)執(zhí)行安裝任務(wù),否則這些安裝任務(wù)將包含在安裝程序中。
要獲得安裝程序的外觀,您必須選中“Launch in a new process”復(fù)選框。如果您以相同的過(guò)程啟動(dòng)安裝程序,則它將使用當(dāng)前的外觀。不建議將其用于JavaFX或SWT應(yīng)用程序。
安裝程序應(yīng)用程序已添加到“Installer->Screens & Actions”步驟中,并且可以包含指向其他安裝程序應(yīng)用程序的鏈接,例如安裝程序本身。這樣,您可以在不同的上下文中重用屏幕和動(dòng)作。
8、Linux RPM和DEB歸檔文件現(xiàn)在具有可配置的安裝后和卸載前應(yīng)用程序。現(xiàn)在,在媒體向?qū)У摹?/span>Installation options”步驟中,可以配置其他安裝操作。
以前,Linux存檔總是執(zhí)行一組默認(rèn)操作,例如添加符號(hào)鏈接和安裝服務(wù)。對(duì)于安裝和卸載的各個(gè)階段,只能使用“Extra scripts”步驟中的外殼程序腳本執(zhí)行其他步驟。
從install4j 9開(kāi)始,您可以選擇完全禁用額外的安裝操作,也可以選擇在安裝后和卸載前階段選擇自定義安裝程序。
9、現(xiàn)在,“Request privileges”操作可以提升Linux上的特權(quán)。在以前的版本中,這僅適用于Windows和macOS。“Linux privilege requirement”屬性可以采用以下三個(gè)值之一:“none”和“Require root”對(duì)應(yīng)于install4j先前版本中的“Show failure if current user is not root”屬性。如果該屬性設(shè)置為“Try to obtain privileges”,則安裝程序?qū)⒃?/span>GUI模式下以pkexec和在控制臺(tái)模式下以sudo或su啟動(dòng)幫助程序。
pkexec是PolicyKit應(yīng)用程序,可在大多數(shù)Linux發(fā)行版中使用,并使用桌面環(huán)境的身份驗(yàn)證對(duì)話框以root特權(quán)執(zhí)行提升的幫助程序。
pkexec不能在控制臺(tái)模式下使用,因此install4j詢問(wèn)用戶應(yīng)該執(zhí)行哪種命令行身份驗(yàn)證方法(su或sudo)。
10、ID,名稱,屬性值和注釋的搜索已在“Screens & Actions”步驟,“Styles”步驟以及表單組件對(duì)話框中實(shí)現(xiàn)。
有兩種單獨(dú)的搜索操作,一種用于搜索ID,一種用于搜索各種文本值,都可以通過(guò)搜索按鈕或通過(guò)其鍵盤(pán)快捷鍵進(jìn)行訪問(wèn)。
搜索ID時(shí),將包括從當(dāng)前視圖以某種方式可以訪問(wèn)的所有屏幕,操作和表單組件。
匹配元素顯示在結(jié)果樹(shù)的頂部,并帶有指向頂級(jí)元素的反向路徑。當(dāng)您確認(rèn)搜索向?qū)?duì)話框時(shí),匹配將顯示在install4j IDE中。
對(duì)于文本值,將顯示類似的對(duì)話框,其中提供了可選的文本匹配選項(xiàng),例如通配符,正則表達(dá)式和區(qū)分大小寫(xiě)。您還可以選擇是否包含元素名稱,注釋或?qū)傩灾怠?
默認(rèn)情況下,確認(rèn)對(duì)話框時(shí)顯示第一個(gè)匹配項(xiàng)。您可以通過(guò)預(yù)先選擇在結(jié)果樹(shù)中顯示任何其他元素。
11、install4j 9允許在DMG中更靈活地配置頂級(jí)文件。掛載DMG時(shí),頂級(jí)文件將顯示在啟動(dòng)器或安裝程序旁邊的Finder中。您還需要它們來(lái)設(shè)置DMG的樣式。
除了單個(gè)文件和符號(hào)鏈接,您現(xiàn)在還可以添加.tar.gz文件,以將另一個(gè)應(yīng)用程序,外部安裝程序或文檔包含到DMG。
此外,您現(xiàn)在可以為單個(gè)文件指定文件模式。
12、現(xiàn)在,install4j編譯器可以在分發(fā)樹(shù)中為非Windows媒體文件保留內(nèi)部符號(hào)鏈接。如果不需要此行為,則在“Files->File Options”步驟中,可以取消選擇相應(yīng)的選項(xiàng)。
13、現(xiàn)在可以自定義“Install a service”操作的重啟行為。重新啟動(dòng)之前的暫停,最大重新啟動(dòng)次數(shù)以及重置故障計(jì)數(shù)之后的時(shí)間閾值可配置為“Restart on failure”屬性的子屬性。
14、在帶有進(jìn)度對(duì)話框的無(wú)人值守模式下,可以選擇顯示警報(bào)。可以使用安裝程序應(yīng)用程序的“Show alerts”屬性或-alerts命令行參數(shù)激活此新模式。
更新下載程序模板將執(zhí)行模式傳播到下載的安裝程序。從install4j 9開(kāi)始,它還會(huì)傳播此警報(bào)設(shè)置。由于更新下載器是模板,因此不會(huì)自動(dòng)為您的現(xiàn)有項(xiàng)目更新。您將必須在更新下載器中找到名為“設(shè)置安裝程序參數(shù)”的操作,并將腳本替換為新更新程序應(yīng)用程序中的腳本。
15、Unix默認(rèn)目錄模式現(xiàn)在用于分發(fā)樹(shù)中的手動(dòng)目錄條目,并且在編輯手動(dòng)目錄條目時(shí)可以被覆蓋。默認(rèn)模式在“Files->File Options”步驟中配置。
16、自定義安裝程序應(yīng)用程序現(xiàn)在具有“Create executable”屬性,以防止創(chuàng)建可執(zhí)行文件。在這種情況下,只能通過(guò)ApplicationLauncher API和啟動(dòng)程序集成來(lái)啟動(dòng)自定義安裝程序應(yīng)用程序。
17、使用ApplicationLauncher API時(shí)可以獲得進(jìn)度信息。更新下載器和其他安裝程序應(yīng)用程序通常是通過(guò)ApplicationLauncher.launchApplication或ApplicationLauncher.launchApplicationInProcess以無(wú)人參與模式啟動(dòng)的。
以前,無(wú)法從已啟動(dòng)的應(yīng)用程序獲取進(jìn)度信息,您只能等到完成為止。從install4j 9開(kāi)始,傳遞給ApplicationLauncher API的回調(diào)具有方法createProgressListener,可以重寫(xiě)該方法以返回您自己的實(shí)現(xiàn)。然后,該進(jìn)度偵聽(tīng)器將接收所有進(jìn)度信息,包括狀態(tài)消息,屏幕和操作ID以及進(jìn)度百分比。
“hello”示例項(xiàng)目中的“HelloGui”類向您展示了如何執(zhí)行此操作。
ApplicationLauncher.launchApplication("<ID>", null, true, new ApplicationLauncher.Callback() { @Override public void exited(int exitValue) { } @Override public void prepareShutdown() { } @Override public ApplicationLauncher.ProgressListener createProgressListener() { return new ApplicationLauncher.ProgressListenerAdapter() { @Override public void percentCompleted(int value) { // TODO use } @Override public void indeterminateProgress(boolean indeterminateProgress) { // TODO use } //TODO override other methods as required }; } } );
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn