2016-03-22 3 views
0

Я пытаюсь сделать учебник «Проверка на старость» от https://www.firegiant.com/wix/tutorial/upgrades-and-modularization/checking-for-oldies/.Wix UpgradeVersion

<?xml version='1.0' encoding='Windows-1252'?> 
<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'> 
    <Product Name='Foobar 1.0.1' Manufacturer='Acme Ltd.' 
     Id='027F68D8-1963-4C76-8274-7091232BB4F4' 
     UpgradeCode='6768C9D3-52DF-4E7E-A8C3-F9CB9F29EA91' 
     Language='1033' Codepage='1252' Version='1.0.1' > 
    <Package Id='*' Keywords='Installer' Description="Acme's Foobar 1.0.1 Installer" 
     Comments='Foobar is a registered trademark of Acme Ltd.' Manufacturer='Acme Ltd.' 
     InstallerVersion='100' Languages='1033' Compressed='yes' SummaryCodepage='1252' /> 

    <UI Id="MyWixUI_Mondo"> 
     <UIRef Id="WixUI_Mondo" /> 
     <UIRef Id="WixUI_ErrorProgressText" /> 

     <DialogRef Id="UserRegistrationDlg" /> 

     <Publish Dialog="LicenseAgreementDlg" Control="Next" Event="NewDialog" Value="UserRegistrationDlg" Order="3">LicenseAccepted = "1"</Publish> 
     <Publish Dialog="SetupTypeDlg" Control="Back" Event="NewDialog" Value="UserRegistrationDlg">1</Publish> 
    </UI> 

    <Upgrade Id='10A11EA3-8A34-46A1-87D9-679C944E305C'> 
     <UpgradeVersion OnlyDetect='yes' Property='SELFFOUND' 
      Minimum='1.0.1' IncludeMinimum='yes' 
      Maximum='1.0.1' IncludeMaximum='yes' /> 
     <UpgradeVersion OnlyDetect='yes' Property='NEWERFOUND' 
      Minimum='1.0.1' IncludeMinimum='no' /> 
    </Upgrade> 


    <Property Id="INSTALLDIR"> 
     <RegistrySearch Id='AcmeFoobarRegistry' Type='raw' Root='HKLM' Key='Software\Acme\Foobar 1.0' Name='InstallDir' /> 
    </Property> 
    <Property Id="FILEB1EXISTS"> 
     <DirectorySearch Id="CheckFileDir" Path="[INSTALLDIR]" Depth="0"> 
     <FileSearch Id="CheckFile" Name="B1.txt" /> 
     </DirectorySearch> 
    </Property> 
    <Property Id="WIXUI_INSTALLDIR" Value="INSTALLFOLDER" /> 



    <Media Id='1' Cabinet='Sample.cab' EmbedCab='yes' DiskPrompt="CD-ROM #1" /> 
    <Property Id='DiskPrompt' Value="Acme's Foobar 1.0 Installation [1]" /> 

    <Directory Id='TARGETDIR' Name='SourceDir'> 
     <Directory Id='ProgramFilesFolder' Name='PFiles'> 
     <Directory Id='Acme' Name='Acme'> 
      <Directory Id='INSTALLFOLDER' Name='Foobar 1.0'> 
      <Component Id='MainExecutable' Guid='9805D06F-DF58-4FF5-A9E9-74B11C794D7A'> 

       <File Id='FoobarEXE' Name='FoobarAppl10.exe' DiskId='1' Source='FoobarAppl10.exe' KeyPath='yes'> 
       <Shortcut Id="startmenuFoobar10" Directory="ProgramMenuDir" Name="Foobar 1.0" WorkingDirectory='INSTALLDIR' Icon="Foobar10.exe" IconIndex="0" Advertise="yes" /> 
       <Shortcut Id="desktopFoobar10" Directory="DesktopFolder" Name="Foobar 1.0" WorkingDirectory='INSTALLDIR' Icon="Foobar10.exe" IconIndex="0" Advertise="yes" /> 
       </File> 
       <RemoveFile Id='LogFile' On='uninstall' Name='Foobar10User.log' /> 
      </Component> 
      <Component Id='HelperLibrary' Guid='5AE6F8C7-AEC7-43A0-B4D8-1178D7FC7C3A'> 
       <File Id='HelperDLL' Name='Helper.dll' DiskId='1' Source='Helper.dll' KeyPath='yes' /> 
      </Component> 

      <Component Id='Manual' Guid='0AC1B698-822E-4B56-8D78-42DDF84D8667'> 
       <File Id='Manual' Name='Manual.pdf' DiskId='1' Source='Manual.pdf' KeyPath='yes'> 
       <Shortcut Id='startmenuManual' Directory='ProgramMenuDir' Name='Instruction Manual' Advertise='yes' /> 
       </File> 
      </Component> 
      </Directory> 
     </Directory> 
     </Directory> 
     <Directory Id="ProgramMenuFolder" Name="Programs"> 
     <Directory Id="ProgramMenuDir" Name="Foobar 1.0"> 
      <Component Id="ProgramMenuDir" Guid="B36BF023-6797-476B-BAAD-4AFD5CCE7A9A"> 
      <RemoveFolder Id='ProgramMenuDir' On='uninstall' /> 
      <RegistryValue Root='HKCU' Key='Software\[Manufacturer]\[ProductName]' Type='string' Value='' KeyPath='yes' /> 
      </Component> 
     </Directory> 
     </Directory> 

     <Directory Id="DesktopFolder" Name="Desktop" /> 
    </Directory> 



    <Feature Id='Complete' Level='1'> 
     <Feature Id='MainProgram' Level='1'> 
     <ComponentRef Id='MainExecutable' /> 
     <ComponentRef Id='HelperLibrary' /> 
     <ComponentRef Id='ProgramMenuDir' /> 
     </Feature> 

     <Feature Id='Documentation' Level='1'> 
     <ComponentRef Id='Manual' /> 
     <Condition Level="0">NOT FILEB1EXISTS</Condition> 
     </Feature> 
    </Feature> 

    <Icon Id="Foobar10.exe" SourceFile="FoobarAppl10.exe" /> 

    <Property Id='NOTEPAD'>Notepad.exe</Property> 
    <!--<CustomAction Id='LaunchFile' Property='NOTEPAD' ExeCommand='[SourceDir]Readme.txt' Return='asyncNoWait' /> 



    <InstallExecuteSequence> 
     <Custom Action='LaunchFile' After='InstallFinalize'>NOT Installed</Custom> 
     <Custom Action='AlreadyUpdated' After='FindRelatedProducts'>SELFFOUND</Custom> 
     <Custom Action='NoDowngrade' After='FindRelatedProducts'>NEWERFOUND</Custom> 
    </InstallExecuteSequence>--> 
    <CustomAction Id='LaunchFile' Property='NOTEPAD' ExeCommand='[SourceDir]Readme.txt' Return='asyncNoWait' /> 


    <CustomAction Id='AlreadyUpdated' Error='Foobar 1.0 has already been updated to 1.0.1 or newer.' /> 
    <CustomAction Id='NoDowngrade' Error='A later version of [ProductName] is already installed.' /> 

    <InstallExecuteSequence> 
     <Custom Action='AlreadyUpdated' After='FindRelatedProducts'>SELFFOUND</Custom> 
     <Custom Action='NoDowngrade' After='FindRelatedProducts'>NEWERFOUND</Custom> 
    </InstallExecuteSequence> 




    </Product> 
</Wix> 

Моя проблема SELFFOUND и NEWERFOUND не установлен так, таким образом, я никогда не достичь состояния, чтобы увидеть сообщение AlreadyUpdated или NoDowngrade

результат "FindRelatedProduct" в многословным mode: MSI (c) (C0: F8) [08: 43: 46: 624]: Выполнение действия: FindRelatedProducts Действие 08:43:46: FindRelatedProducts. Поиск связанных приложений Начало действия 08:43:46: FindRelatedProducts. Действие завершено 08:43:46: FindRelatedProducts. Возвращаемое значение 1.

MSI (04:60) [08: 43: 55: 263]: Выполнение действия: FindRelatedProducts Действие 08:43:55: FindRelatedProducts. Поиск связанных приложений Начало действия 08:43:55: FindRelatedProducts. MSI (04:60) [08: 43: 55: 263]: Пропуск действия FindRelatedProducts: уже сделано на стороне клиента Действие завершено 08:43:55: FindRelatedProducts. Возвращаемое значение 0. MSI (ы) (04:60) [08: 43: 55: 263]: Пропускное действие: уже обновлено (условие ложно) MSI (s) (04:60) [08:43:55: 263]: Пропуск действия: NoDowngrade (условие ложно)

ответ

0

Предполагая, что ваши версии и версии UpgradeCode верны, вы можете быть перекрестным контекстом; для каждого пользователя установка не может обновить (или обнаружить) для каждой установки машины и наоборот. Если вы выполните установку с подробным журналом, то он может сказать вам, что FindRelatedProducts не нашел его в вашем контексте установки.

+0

Я устанавливаю с подробным режимом, я помещаю результат в свое первоначальное сообщение. – Frederic7391

+0

В нем говорится, что «уже сделано на стороне клиента», что означает, что FindRelatedProducts уже был выполнен в последовательности пользовательского интерфейса, поэтому вы показали, что пропущен один не фактический поиск. – PhilDW

Смежные вопросы