2016-04-18 32 views
0

我使用wix工具集3.10創建了.msi安裝程序。我已經將安裝程序本地化爲多語言(只有一個.msi文件,根據窗口的區域設置顯示語言)。本地化的多語言wix安裝程序不以正確的語言在.wxl文件中顯示字符串的值

我創造了DA-DK.mst文件,我用wisubstg.vbs嵌入語言爲英語.msi文件,所以我有一個multilangual安裝同時適用於丹麥語和英語,但我有兩個問題

任何從語言文件中獲取其值的字符串WixUI_da-DK.wxl的語言文件不會顯示正確的語言,它總是顯示默認語言值,即英語

另一個問題是內置的字符串被截斷以某種形式在丹麥語言中。 Cut off built in text

這裏有什麼問題,以及如何解決它? launch is alwyas in english 這是我的UI從.wxs文件

<UI> 

      <UIRef Id="WixUI_InstallDir"/> 
      <Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="InstallDirDlg" Order="2">1</Publish> 
      <Publish Dialog="InstallDirDlg" Control="Back" Event="NewDialog" Value="WelcomeDlg" Order="2">1</Publish> 
      <Publish Dialog="ExitDialog" Control="Finish" Event="DoAction" Value="LaunchApplication">WIXUI_EXITDIALOGOPTIONALCHECKBOX = 1 and NOT Installed</Publish> 
     </UI> 

     <Property Id="WIXUI_INSTALLDIR" Value="INSTALLDIR" /> 
     <Icon Id="icon.ico" SourceFile=".....\Images\Img_app.ico"/> 
     <Property Id="ARPPRODUCTICON" Value="icon.ico" /> 

     <Property Id="WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT" Value="!(loc.LaunchApp)" /> 
     <Property Id="WIXUI_EXITDIALOGOPTIONALCHECKBOX" Value="1" /> 

<!-- end snippet --> 

回答

1

如果你的文字被截斷,你需要更改用戶界面的尺寸。

無論您使用哪種控件來顯示文本,都會使其寬度變大。 由於沒有足夠的關於該UI控件的信息或它正在顯示的文本,我無法評論始終是英文的「啓動應用程序名稱」文本。您需要添加更多關於您所使用的用戶界面的信息。


下面是默認的對話框的鏈接威克斯 https://github.com/wixtoolset/wix3/tree/develop/src/ext/UIExtension/wixlib

在您定義了此控件的browsedlg.wxs。

<Control Id="Description" Type="Text" X="25" Y="23" Width="280" Height="15" Transparent="yes" NoPrefix="yes" Text="!(loc.BrowseDlgDescription)" /> 

不幸的是,丹麥語在這裏的描述相當長,所以安裝程序會切斷文本並使用省略號。

我認爲解決這個問題的最簡單方法是在您的項目中添加一個名爲AppNameBrowseDlg.wxs的新wxs文件,並從這裏https://github.com/wixtoolset/wix3/blob/develop/src/ext/UIExtension/wixlib/BrowseDlg.wxs複製整個xml文件。您需要將<Dialog> ID更改爲「AppNameBrowseDlg」。現在,您可以將「描述」控件的寬度變大,以便丹麥文本能夠正確合適。

要使用這個新的對話框,你還需要添加另一個wxs文件,你可以把它稱爲AppName_InstallDir.wxs,這將是這個https://github.com/wixtoolset/wix3/blob/develop/src/ext/UIExtension/wixlib/WixUI_InstallDir.wxs的副本。在這裏,您需要更改<UI> ID來AppName_InstallDir

只要改變< DialogRef編號= 「BrowseDlg」 >到< DialogRef編號= 「AppNameBrowseDlg」 >

您還需要修改這些行

<Publish Dialog="BrowseDlg" Control="OK" Event="DoAction" Value="WixUIValidatePath" Order="3">1</Publish> 
<Publish Dialog="BrowseDlg" Control="OK" Event="SpawnDialog" Value="InvalidDirDlg" Order="4"><![CDATA[NOT WIXUI_DONTVALIDATEPATH AND WIXUI_INSTALLDIR_VALID<>"1"]]></Publish> 

<Publish Dialog="InstallDirDlg" Control="ChangeFolder" Event="SpawnDialog" Value="BrowseDlg" Order="2">1</Publish> 

引用您的AppNameBrowseDlg

這基本上覆制了對話和UI defin你正在使用你的安裝程序。在您的產品中,您只需要將UIRef更改爲「AppName_InstallDir」,並且它將使用您定義的用戶界面替換默認的browsedlg,並將其替換爲希望符合丹麥文本的用戶界面。我還會考慮在這裏提交wix改進https://github.com/wixtoolset/issues/issues,要求WixUI的browsedlg的描述控件更寬。

對於您的啓動文本,您會遇到英文卡住,因爲您正在使用英文msi作爲其他語言的基礎。此複選框已實現的方式意味着您正在對複選框控件的文本值設置爲的屬性中的英文文本進行硬編碼。您對msi進行本地化的方式可能是在運行時創建多個字符串表並從適當的表中選擇字符串。但是,複選框沒有從字符串表中獲取文本值。相反,它來自於被設置爲「LaunchApp」價值的財產的價值。 (順便說一下,如果您使用丹麥版本的msi作爲基礎,則此文本將始終爲丹麥語)。

我們可以用修改Wix BrowseDlg的方式解決這個問題。在這種情況下,我們要在ExitDialog從這裏複製到AppNameExitDialog.wxs https://github.com/wixtoolset/wix3/blob/develop/src/ext/UIExtension/wixlib/ExitDialog.wxs

您需要將對話ID重命名爲AppNameExitDialog,然後我們要看看這個控制

<Control Id="OptionalCheckBox" Type="CheckBox" X="135" Y="190" Width="220" Height="40" Hidden="yes" Property="WIXUI_EXITDIALOGOPTIONALCHECKBOX" CheckBoxValue="1" Text="[WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT]"> 
    <Condition Action="show">WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT AND NOT Installed</Condition> 
</Control> 

要它更改爲下列

<Control Id="OptionalCheckBox" Type="CheckBox" X="135" Y="190" Width="220" Height="40" Property="WIXUI_EXITDIALOGOPTIONALCHECKBOX" CheckBoxValue="1" Text="!(loc.LaunchApp)" /> 

此外,窗戶安裝程序無法與任何其他顏色比你在你鏈接的屏幕截圖顯示灰色肥胖型一個自動顯示一個複選框的背景。如果你想擺脫文本背後的灰色,你實際上可以將複選框控件的寬度和高度修改爲複選框本身的大小,並將文本設置爲「」。然後,您需要將另一個文本控件添加到用於發送複選框文本的用戶界面。這樣你就不會在文本後面有灰色背景。缺點是你必須點擊實際的複選框來切換它是否被選中,而在你點擊灰色區域的任何地方之前。

再次,正確引用您需要去您的AppName_InstallDir.wxs文件並更改ExitDialog引用改爲AppNameExitDlg,改變它的一個<發佈>引用ExitDialog這個新的對話框。

希望這會有所幫助。 git存儲庫對於理解wix如何在真正的工作環境下非常有用。

+0

我已經添加了包含安裝程序UI的.wxs文件的一部分 – Laila

+0

我對如何更改UI的大小進行了搜索,但是我什麼也沒找到!你的意思是我必須添加客戶對話框嗎? – Laila

+0

更新了水平線以下的更新答案。希望這有助於=] –

相關問題