簡體   English   中英

NetBeans和Inno Setup無法產生適當的本機.exe

[英]NetBeans and Inno Setup don't produce a proper Native .exe

我已經在Netbeans中創建了一個JavaSE應用程序,並且正在使用Inno Setup 5生成我認為是完整的Windows安裝,包括JRE。 按照說明,我已經檢查了NetBeans屬性框是否為Native,並且在路徑中有Inno Setup 5。 EXE已生成並可以很好地安裝,前提是目標計算機已安裝Java。 如果不是,則沒有與.jre的文件關聯,也沒有javac.exe,因此.jar文件將不會運行。

3/4/2017:今天經過反復研究和嘗試后,我現在更加全面地了解了NetBeans Native打包的實際功能。 它創建一個Installer exe,當將其安裝到目標計算機上並在具有或不具有JRE的情況下執行時,將創建實際的myApp.exe並將其放在“開始”菜單上。 我的問題一直是在myApp.jar文件中包含JRE,因此我只是想雙擊myApp.jar。 如果我使用myApp.exe,它將起作用。

但是,我現在看到我仍然有問題。 myApp需要許多支持數據文件,並需要從.ini文件讀取數據。 因此,我將不得不創建一個Inno安裝程序來單獨執行這些操作,可以這么說,我的用戶將必須下載並運行兩個安裝程序。 如果執行NetBeans本機安裝程序的人員能夠訪問Inno設置文件以進行編輯,那就太好了。

埃德

NetBeans具有打包選項,用於創建“本機”應用程序,即Windows的MyApp.exe文件。 這樣做的重要性是,您將獲得Windows可執行文件INCLUDES JRE,這意味着最終用戶無需在其計算機上安裝Java或JRE即可運行該應用程序。

聽起來不錯,但是文檔對如何使其工作一無所知,至少對我而言不是。 這就是我所學到的。

首先,要使其正常工作,您必須在開發計算機上安裝Inno Setup 5或更高版本。 顯然,NetBeans創建一個Inno .iss文件並運行它。

為了更好地理解它,我為Inno AnagramGame示例創建了一個NetBeans項目。 要啟用本機打包選項,請首先在NetBeans中選擇Project,右鍵單擊並選擇Properties | Deployment。 選中本機包裝盒。 這將導致EXE選項被放置在NetBeans包裝菜單上。 即,選擇項目,右鍵單擊並單擊打包為。 單擊EXE安裝程序將啟動生成“程序包”的過程。

構建安裝程序要花費很長時間,因為它必須累積JRE的所有必要部分並將其合並到軟件包中。 這也使安裝程序變得很大。 即使對於最小的Java程序,它也將約為35 Mb。

在對某些應用程序(例如AnagramGame2)進行本機打包之后,您將在NetBeans項目文件夾中找到以下內容:C:\\ Users \\ Ed Sowell \\ Documents \\ NetBeansProjects \\ AnagramGame2 \\ dist \\ anagrams.jar和C:\\ Users \\ Ed Sowell \\文件\\的NetBeansProjects \\ AnagramGame2 \\ DIST \\束\\ AnagramGame2-1.0.exe

Anagrams.jar是AnagramGame2應用程序的Java存檔文件。 如果您已安裝JAVA,則實際上將通過雙擊運行該項目。 但是,如果將其移動到未安裝Java或JRE的另一台計算機上,它將無法執行。 原因是jar文件未包含JRE。 我花了很長時間才意識到這一點。

現在,您可能會認為AnagramGame2-1.0.exe是應用程序的本機可執行文件,但是,不是。 實際上是安裝程序,這是我花了很長時間才認識到的另一件事。

那么,傳說中的Windows Native應用程序文件在哪里? 答案是還沒有。 為了得到它,您必須運行安裝程序! 運行它之后,您將在所有地方的C:\\ Users \\ Ed Sowell \\ AppData \\ Local \\ AnagramGame2中找到急需的EXE:

C:\\ Users \\ Ed Sowell \\ AppData \\ Local \\ AnagramGame2 \\ AnagramGame2.exe

此外,選擇適當的選項后,應用程序名稱將出現在Windows“開始”菜單和桌面上。

因此,要分發Windows Native應用程序,您必須:

  1. 創建一個NetBeans項目。
  2. 清理項目
  3. 為項目啟用本機打包選項
  4. 做Package as |本地安裝程序
  5. 分發安裝程序,在本示例中為AnagramGame2-1.0.exe
  6. 然后,您的用戶運行安裝程序。 然后,他/她從“開始”菜單運行應用程序,或者雙擊桌面圖標。

關於此NetBeans / Inno Setup流程的正確使用,我還有很多不了解的地方。 有一些小謎團,例如為什么它在User AppData Local中隱藏了最終產品的位置。 誰會想到去那里看? 為何為什么調用Installer AnagramGame2-1.0.exe而不是類似setupAnagramGame2.exe的安裝程序? 但是,這是我尚未解決的最大問題:如何安裝應用程序所需的輔助文件? 還是從INI文件中獲取所需的數據? 如果使在NetBeans流程中構建和使用的.iss可用,則可以對其進行編輯,但是到目前為止,我還沒有找到它。 我的猜測是它被刪除了。 除此之外,我唯一想到的就是編寫另一個 .iss文件來完成這項工作。 不幸的是,這意味着用戶必須下載並運行兩個安裝程序!

使用Inno Setup的NetBeans打包機制存在的問題是-AFAIK-您無法將自己的.iss文件提供給構建機制。 NetBeans創建自己的安裝腳本文件,幾乎沒有外部影響。

我最大的問題是,該軟件包(至少對於Windows是)安裝在C:\\Users\\<user>\\AppData\\Local 到底誰會去那里找回申請??? 不知道他們為什么做出這個決定。

每當您單擊NetBeans生成的可執行文件時,您都無法控制位置,快捷方式等等。這太糟糕了……

為了克服這個問題,我做了以下工作:

  • 允許NetBeans完成其工作並創建可執行安裝程序
  • 創建安裝程序后,運行安裝程序,然后將其安裝在Windows安裝中所有位置中最奇怪的位置
  • 使用原始NetBeans生成的安裝可執行文件創建的所有文件和子目錄,打開Inno Setup Compiler並創建自己的安裝腳本。
  • 使用上面的命令生成我自己的安裝可執行文件
  • 運行自行創建的安裝程序:自您自己創建安裝可執行文件以來,您現在擁有所需的所有選項(更改安裝目錄,默認安裝目錄,默認安裝目錄名稱,是否使用桌面快捷方式,允許所有用戶或當前使用的選項)僅限用戶,...)

我知道這是一種解決方法,並且是一種雙向過程,但是那是當時我需要的唯一(?)/ best(?)方法。

同時,我在此頁面上找到了另一種創建安裝程序可執行文件的方法,您可以在其中創建自己的.iss文件,因此可以更好地控制即將發生的事情。

我還沒有嘗試過,但是我認為它有很多機會。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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