windows - WiX lokalisering - Desktop/Programmenu shortcut ikke erstattet i Upgrade

Indlæg af Hanne Mølgaard Plasc

Problem



Vi har for nylig inkluderet lokaliseringsstøtte til forenklet Chiense (zh-cn) i Windows Installer ved hjælp af WIX 3.5. Den nuværende version af vores produkt er 1.3.0 og i gammel version (1.2.0) har vi ingen lokaliseringsstøtte.


Vi har også ændret produktkoden til 1.3.0 for at udføre større opgradering. Og brugt MSI transformation (ved hjælp af Wisubstg.vbs og Wilangid.vbs) for at integrere lokaliseringsstøtten i enkelt MSI uden brug af Bootstrapper.


Når vi tester dette i forenklet kinesisk opbygning i opgraderingsfunktion, blev de korte nedskæringer på skrivebordet og prpogrammen ikke erstattet, men kopieret med kinesisk tekst.


WiX Short Cut kode er her.


<Shortcut Id="StartServiceShortcut" Icon="StartServiceIcon" 
     Name="!(loc.STR\_StartServiceName)" 
     Description="!(loc.STR\_StartServiceDesc)"  
     Target="[INSTALLLOCATION]binmyapp.exe" Arguments="-s" 
     WorkingDirectory="INSTALLLOCATION"/>


product.Wxl


<String Id="STR\_StartServiceName">Start Service</String>
<String Id="STR\_StartServiceDesc">Start Services</String>



  • Installeret 1.2 bygges med Windows 7 engelsk version

  • Ændrede de regionale indstillinger til forenklet kinesisk og kør derefter 1,3-installationsprogrammet.

  • Se Windows Installer Wizard, der viser indholdet i forenklet kinesisk.

  • Installationen var vellykket. Men skrivebord/programmenuer dupliceres med ny kinesisk tekst.

  • Begge shorcuts arbejder uden problemer. Men afinstallationen fjernede ikke begge shourt nedskæringer.



Afinstaller produktet fjerner ikke de korte nedskæringer. Jeg har også set de to indgange i listen Programmer/Funktioner. Også set er der to forskellige registreringsdatabaser. Produktnavn og Publisher-værdier er lokaliserede alle andre egenskaber er ens i disse til registreringsnøgler.


Hvor mangler jeg?


Tak på forhånd for enhver hjælp!


Opdatering:


Efter at have ændret opgraderingssproget til '0', får jeg stadig det samme problem. Det lader til, at denne nye version 1.3 er blevet installeret som helt nyt produkt. Enhver hjælp!

        Efter at have ændret opgraderingssproget til '0', får jeg stadig det samme problem. Det lader til, at denne nye version 1.3 er blevet installeret som helt nyt produkt. Enhver hjælp!


    <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)" >

Bedste reference


Endelig fik jeg det. Tak til Alex Shevchuks blog fra MSI til WiX, del 8 - Major Upgrade
. [5]



  FindRelatedProducts-aktionen løber gennem hver optagelse af opgraderingsbordet i rækkefølge og sammenligner opgraderingskoden, produktversionen og sproget i hver række til produkter, der er installeret på systemet.



Så, efter at have ændret min kode til noget som nedenfor, blev opgraderingen succesfuld. Kan være nyttigt for andre.


Eventuelle kommentarer er velkomne!


  <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>