2012-03-29 5 views
1

最近、WIRE 3.5を使用しているWindowsインストーラで簡素化されたChiense(zh-cn)のローカリゼーションサポートが追加されました。私たちの製品の現在のバージョンは1.3.0で、古いバージョン(1.2.0)ではローカライゼーションのサポートがありません。WiXのローカリゼーション - アップグレードでDesktop/Programメニューのショートカットが置換されない

メジャーアップグレードを実行するために、1.3.0の製品コードも変更しました。また、MSIトランスフォーム(Wisubstg.vbsとWilangid.vbsを使用)を使用して、ローカライゼーションサポートをBootstrapperを使用せずに単一のMSIに統合しました。

アップグレードモードで簡体字中国語ビルドでこれをテストすると、デスクトップとプリファグラムメニューのショートカットは置き換えられず、中国語のテキストと重複していました。

WiXショートカットコードはこちらです。 Windows 7の英語版

  • で1.2ビルドをインストール

    <Shortcut Id="StartServiceShortcut" Icon="StartServiceIcon" 
        Name="!(loc.STR_StartServiceName)" 
        Description="!(loc.STR_StartServiceDesc)" 
        Target="[INSTALLLOCATION]bin\myapp.exe" Arguments="-s" 
        WorkingDirectory="INSTALLLOCATION"/> 
    

    product.Wxl

    <String Id="STR_StartServiceName">Start Service</String> 
    <String Id="STR_StartServiceDesc">Start Services</String> 
    
    • は、簡体字中国語に地域設定を変更し、その後1.3インストーラを実行します。
    • 簡体字中国語で内容を表示するWindowsインストーラウィザードを見てください。
    • インストールに成功しました。しかしデスクトップ/プログラムのメニューは新しい中国語のテキストと重複しています。
    • 両方のショーカットが問題なしで作業しています。しかしアンインストールでは、両方のshourtカットは削除されませんでした。

    アンインストール製品では、ショートカットは削除されません。また、「プログラム/機能」リストに2つのエントリがあることも確認しました。また、2つの異なるレジストリエントリがあることがわかります。製品名とパブリッシャの値はローカライズされており、他のすべてのプロパティはレジストリキーと同じです。

    どこが見当たりませんか?

    アドバイスありがとうございました!

    更新:

    「0」にアップグレード言語を変更した後、私はまだ同じ問題を取得しています。この新しいバージョン1.3はまったく新しい製品としてインストールされたようです。助けて!
    アップグレード言語を「0」に変更した後も、私は同じ問題が発生しています。この新しいバージョン1.3はまったく新しい製品としてインストールされたようです。どんなヘルプ!

    <Package InstallerVersion="300" Compressed="yes" InstallPrivileges="elevated" /> 
    
        <Media Id="1" Cabinet="media1.cab" EmbedCab="yes" /> 
    
    
        <Upgrade Id="$(var.UpgradeCode)"> 
         <UpgradeVersion Minimum="$(var.ProductVersion)" 
             IncludeMinimum="no" 
             OnlyDetect="yes" 
             Language="0" 
             Property="NEWPRODUCTFOUND" /> 
    
         <UpgradeVersion Minimum="$(var.RTMProductVersion)" 
             IncludeMinimum="yes" 
             Maximum="$(var.ProductVersion)" 
             IncludeMaximum="no" 
             Language="0" 
             Property="UPGRADEFOUND" /> 
    
        </Upgrade> 
        <Product Id="$(var.ProductID)" Name="!(loc.STR_ProductName)" Language="!loc.STR_Language)" Version="$(var.ProductVersion)" Manufacturer="!(loc.STR_Manufacturer)" UpgradeCode="$(var.UpgradeCode)" > 
    
  • 答えて

    1

    最後に、私はそれを得ました。 Alex ShevchukのブログFrom MSI to WiX, Part 8 - Major Upgrade に感謝します。

    FindRelatedProductsアクションは、Upgradeテーブルの各レコードを順番に実行し、各行のアップグレードコード、製品バージョン、および言語をシステムにインストールされている製品と比較します。

    私のコードを以下のように変更した後、アップグレードは成功しました。他の人には役に立ちます。

    コメントは大歓迎です!

    <Product Id="$(var.ProductID)" 
        Name="!(loc.STR_ProductName)" 
        Language="0" 
        Version="$(var.ProductVersion)" 
        Manufacturer="!(loc.STR_Manufacturer)" 
        UpgradeCode="$(var.UpgradeCode)"> 
    
    <Package InstallerVersion="300" Compressed="yes" InstallPrivileges="elevated" Languages="0" Manufacturer="!(loc.STR_Manufacturer)" /> 
    
    <Media Id="1" Cabinet="media1.cab" EmbedCab="yes" /> 
    
    
    <Upgrade Id="$(var.UpgradeCode)"> 
        <UpgradeVersion Minimum="$(var.ProductVersion)" 
            IncludeMinimum="no" 
            OnlyDetect="yes" 
            Language="0" 
            Property="NEWPRODUCTFOUND" /> 
    
        <!-- For UPGRADEFOUND Property, the Language attribute should be set to 1033 as previous version supports only English --> 
        <UpgradeVersion Minimum="$(var.RTMProductVersion)" 
            IncludeMinimum="yes" 
            Maximum="$(var.ProductVersion)" 
            IncludeMaximum="no" 
            Language="1033" 
            Property="UPGRADEFOUND" /> 
    
    </Upgrade> 
    
    +0

    修正のおめでとう!あなたができるときは、あなたの答えが「受け入れられた」とマークして、あなたの質問が答えられ、あなたの解決策から学ぶことができるようにしてください。乾杯〜 –

    +0

    @アンドリューコザック受け入れた。コメントありがとう。 – Muthukkumaran

    関連する問題