自定義安裝程式
您可以使用腳本通過以下方式來自定義安裝程式:
> 添加Qt Installer Framework操作,該操作由腳本提供,并由安裝程式執行,
> 添加新頁面,該頁面由您在package.xml檔案中指定,并將其放置在packages檔案夾中,
> 修改現有頁面,通過插入自定義用戶界面元素來作為子部件,
> 添加語言變體,
您可以同時使用組件腳本和控制腳本來自定義安裝程式,通過在組件的package.xml檔案的Script元素中指定組件腳本,可以將該腳本與特定的組件關聯起來,當組件的元資料獲取完畢時,將加載該腳本,有關組件腳本的更多資訊,請參見組件腳本章節,
通過在安裝程式的control.xml檔案的ControlScript元素中指定控制腳本,可以將該腳本與整個安裝程式關聯起來,控制腳本可以是安裝程式資源的一部分,也可以在命令列中被傳遞,它們可用于修改安裝程式頁面,該頁面在加載組件之前向用戶顯示,另外,您可以使用它們來修改卸載程式中的頁面,有關更多資訊,請參見控制腳本章節,
有關可用于組件/控制腳本的全域JavaScript物件的更多資訊,請參見腳本API章節,
添加操作
您可以在安裝程序中使用組件腳本執行Qt Installer Framework操作,通常,操作通過移動,復制或修補方式來操縱檔案,使用QInstaller::Component::addOperation或QInstaller::Component::addElevatedOperation函式來添加操作,有關更多資訊,請參見向組件添加操作章節,
另外,您可以通過派生KDUpdater::UpdateOperation來重新實作方法函式,用于在安裝程式中注冊自定義安裝操作,有關更多資訊,請參見注冊自定義操作章節,
有關可用操作的總結,請參見操作章節,
添加頁面
一個組件可以包含一個或多個用戶界面檔案,這些檔案由組件或控制腳本放置在安裝程式中,安裝程式自動加載package.xml檔案中UserInterfaces元素列出的所有用戶界面檔案,
使用組件腳本添加頁面
要向安裝程式添加新頁面,請使用installer::addWizardPage()方法,并指定新頁面的位置,例如,以下代碼在安裝準備頁面中添加了MyPage實體:
installer.addWizardPage(component,"MyPage",QInstaller.ReadyForInstallation);
您可以使用組件腳本來訪問已加載的視窗子部件,方法是通過該部件的類名來呼叫component::userInterface()方法,如以下代碼片段所示:
component.userInterface( "MyPage" ).checkbox.checked = true;
您還可以為添加的頁面提供回呼函式,要訪問它,請使用在UI檔案中設定的物件名稱(例如,“ MyPage”),然后創建Dynamic${ObjectName}Callback函式(例如,DynamicMyPageCallback):
Component.prototype.DynamicMyPageCallback = function()
{
var page = gui.pageWidgetByObjectName("DynamicMyPage");
page.myButton.click,
page.myWidget.subWidget.setText("hello")
}
您可以使用在UI檔案中設定的物件名稱來訪問視窗子部件,例如,上面代碼中的myButton和myWidget就是子部件物件名稱,
添加子部件
您可以使用組件或控制腳本,來將自定義用戶界面元素,作為單個視窗子部件(例如復選框)插入到安裝程式中,
要插入單個子部件,請使用installer::addWizardPageItem方法,例如,以下代碼片段通過腳本,將MyWidget的實體添加到組件選擇頁面:
installer.addWizardPageItem(component,"MyWidget",QInstaller.ComponentSelection);
與安裝程式進行功能性互動
例如,您可以使用控制腳本在測驗中自動執行安裝程式功能函式,以下代碼段說明了如何在目標檔案夾選擇頁面上自動點擊“下一步”按鈕:
Controller.prototype.TargetDirectoryPageCallback = function()
{
gui.clickButton(buttons.NextButton);
}
翻譯頁面
安裝程式使用Qt翻譯系統,來將用戶可讀的輸出翻譯成多種語言,要提供組件腳本和用戶界面中包含的字串的本地化版本,請創建QTranslator檔案,安裝系統會在加載組件時一起加載該檔案,安裝程式將加載與當前系統區域匹配的翻譯檔案,例如,如果系統區域設定為德語,則將加載de.qm檔案,另外,如果存在本地化的license_de.txt,那么會顯示該檔案,而不是默認的license.txt,
需要將翻譯添加到package.xml檔案中,才能激活組件的翻譯:
<Translations>
<Translation>de.qm</Translation>
</Translations>
將qsTr()函式用于腳本內的文字文本,此外,您可以將Component.prototype.retranslateUi方法添加到腳本中, 當安裝程式的語言更改時,翻譯檔案被加載后,將呼叫該方法,
用于翻譯的背景關系,是使用qsTr時腳本檔案的基礎名,或翻譯用戶界面時UI檔案的類名稱,例如,如果腳本為installscript.qs,則背景關系將為installscript,
注意:翻譯系統還可以用于自定義UI,例如,通過自定義英語版本,使用一個en.ts檔案,來替換安裝程式中的任意文本,
原創造福大家,共享改變世界
獻出一片愛心,溫暖作者心靈
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/5172.html
標籤:其他
