Замена неверсированных файлов в крупном обновлении WiX - PullRequest
2 голосов
/ 27 мая 2010

EDIT!

Хорошо, дальнейшие исследования и эксперименты показывают, что проблемный файл, файл pathwaysMdf, устанавливается! Однако после установки он удаляется действием RemoveFiles!

Я предполагаю, что он делает это, потому что этот файл является частью первоначальной установки, поэтому он выполняет свою работу по удалению и очистке. ARGH! Что я могу сделать?!

У меня все еще есть эта проблема. Это самое близкое к тому, что я пришел к решению, которое работает, и все же оно не совсем работает. Вот (большая часть) код:

     <Product Id='$(var.ProductCode)'
    UpgradeCode='$(var.UpgradeCode)'
    Name="Pathways"
    Version='$(var.ProductVersion)'
    Manufacturer='$(var.Manufacturer)'
    Language='1033'>


  <Package Id="*" 
     Description="Pathways Directory Software"
     InstallerVersion="301"
     Compressed="yes" />

  <WixVariable Id="WixUILicenseRtf" Value="License.rtf" />
  <Media Id="1" Cabinet="Pathways.cab" EmbedCab="yes" />

  <Upgrade Id="$(var.UpgradeCode)">
   <UpgradeVersion
    OnlyDetect="no"  
    Maximum="$(var.ProductVersion)"
    IncludeMaximum="no"
    Language="1033"
    Property="OLDAPPFOUND"
   />
   <UpgradeVersion
    Minimum="$(var.ProductVersion)"
    IncludeMinimum="yes"
    OnlyDetect="yes"
    Language="1033"
    Property="NEWAPPFOUND"
   />
  </Upgrade>

  <!-- directories -->
  <Directory Id="TARGETDIR" Name="SourceDir">

   <!-- program files directory -->
   <Directory Id="ProgramFilesFolder">
    <Directory Id="INSTALLDIR" Name="Pathways"/>
   </Directory>

   <!-- application data directory -->
   <Directory Id="CommonAppDataFolder" Name="CommonAppData">
    <Directory Id="CommonAppDataPathways" Name="Pathways" />
   </Directory>

   <!-- start menu program directory -->
   <Directory Id="ProgramMenuFolder">
    <Directory Id="ProgramsMenuPathwaysFolder" Name="Pathways" />
   </Directory>

   <!-- desktop directory -->
   <Directory Id="DesktopFolder" />

  </Directory>

  <Icon Id="PathwaysIcon" SourceFile="\\Fileserver\Release\Pathways\Latest\Release\Pathways.exe" />

  <!-- components in the reference to the install directory -->
  <DirectoryRef Id="INSTALLDIR">
   <Component Id="Application" Guid="EEE4EB55-A515-4872-A4A5-06D6AB4A06A6">
    <File Id="pathwaysExe" Name="Pathways.exe" DiskId="1" Source="\\Fileserver\Release\Pathways\Latest\Release\Pathways.exe" Vital="yes" KeyPath="yes" Assembly=".net" AssemblyApplication="pathwaysExe" AssemblyManifest="pathwaysExe" />

    <File Id="pathwaysChm" Name="Pathways.chm" DiskId="1" Source="\\fileserver\Release\Pathways\Dependencies\Pathways.chm" />
    <File Id="publicKeyXml" ShortName="RSAPUBLI.XML" Name="RSAPublicKey.xml" DiskId="1" Source="\\fileserver\Release\Pathways\Dependencies\RSAPublicKey.xml" Vital="yes" />
    <File Id="staticListsXml" ShortName="STATICLI.XML" Name="StaticLists.xml" DiskId="1" Source="\\fileserver\Release\Pathways\Dependencies\StaticLists.xml" Vital="yes" />

    <File Id="axInteropMapPointDll" ShortName="AXMPOINT.DLL" Name="AxInterop.MapPoint.dll" DiskId="1" Source="\\fileserver\Release\Pathways\Dependencies\AxInterop.MapPoint.dll" Vital="yes" />
    <File Id="interopMapPointDll" ShortName="INMPOINT.DLL" Name="Interop.MapPoint.dll" DiskId="1" Source="\\fileserver\Release\Pathways\Dependencies\Interop.MapPoint.dll" Vital="yes" />
    <File Id="mapPointDll" ShortName="MAPPOINT.DLL" Name="MapPoint.dll" DiskId="1" Source="\\fileserver\Release\Pathways\Dependencies\Interop.MapPoint.dll" Vital="yes" />

    <File Id="devExpressData63Dll" ShortName="DAAT63.DLL" Name="DevExpress.Data.v6.3.dll" DiskId="1" Source="\\fileserver\Release\Pathways\Dependencies\DevExpress.Data.v6.3.dll" Vital="yes" />
    <File Id="devExpressUtils63Dll" ShortName="UTILS63.DLL" Name="DevExpress.Utils.v6.3.dll" DiskId="1" Source="\\fileserver\Release\Pathways\Dependencies\DevExpress.Utils.v6.3.dll" Vital="yes" />
    <File Id="devExpressXtraBars63Dll" ShortName="BARS63.DLL" Name="DevExpress.XtraBars.v6.3.dll" DiskId="1" Source="\\fileserver\Release\Pathways\Dependencies\DevExpress.XtraBars.v6.3.dll" Vital="yes" />
    <File Id="devExpressXtraNavBar63Dll" ShortName="NAVBAR63.DLL" Name="DevExpress.XtraNavBar.v6.3.dll" DiskId="1" Source="\\fileserver\Release\Pathways\Dependencies\DevExpress.XtraNavBar.v6.3.dll" Vital="yes" />
    <File Id="devExpressXtraCharts63Dll" ShortName="CHARTS63.DLL" Name="DevExpress.XtraCharts.v6.3.dll" DiskId="1" Source="\\fileserver\Release\Pathways\Dependencies\DevExpress.XtraCharts.v6.3.dll" Vital="yes" />
    <File Id="devExpressXtraEditors63Dll" ShortName="EDITOR63.DLL" Name="DevExpress.XtraEditors.v6.3.dll" DiskId="1" Source="\\fileserver\Release\Pathways\Dependencies\DevExpress.XtraEditors.v6.3.dll" Vital="yes" />
    <File Id="devExpressXtraPrinting63Dll" ShortName="PRINT63.DLL" Name="DevExpress.XtraPrinting.v6.3.dll" DiskId="1" Source="\\fileserver\Release\Pathways\Dependencies\DevExpress.XtraPrinting.v6.3.dll" Vital="yes" />
    <File Id="devExpressXtraReports63Dll" ShortName="REPORT63.DLL" Name="DevExpress.XtraReports.v6.3.dll" DiskId="1" Source="\\fileserver\Release\Pathways\Dependencies\DevExpress.XtraReports.v6.3.dll" Vital="yes" />
    <File Id="devExpressXtraRichTextEdit63Dll" ShortName="RICHTE63.DLL" Name="DevExpress.XtraRichTextEdit.v6.3.dll" DiskId="1" Source="\\fileserver\Release\Pathways\Dependencies\DevExpress.XtraRichTextEdit.v6.3.dll" Vital="yes" />

    <RegistryValue Id="PathwaysInstallDir" Root="HKLM" Key="Software\Tribal Data Resources\Pathways" Name="InstallDir" Action="write" Type="string" Value="[INSTALLDIR]" />
   </Component>

  </DirectoryRef>

  <!-- application data components -->
  <DirectoryRef Id="CommonAppDataPathways">

   <Component Id="CommonAppDataPathwaysFolderComponent" Guid="087C6F14-E87E-4B57-A7FA-C03FC8488E0D">
    <CreateFolder>
     <Permission User="Everyone" GenericAll="yes" />
    </CreateFolder>

    <RemoveFolder Id="CommonAppDataPathways" On="uninstall" />
    <!-- <RegistryValue Root="HKCU" Key="Software\TDR\Pathways" Name="installed" Type="integer" Value="1" KeyPath="yes" />-->

   </Component>

   <Component Id="Settings" Guid="A3513208-4F12-4496-B609-197812B4A953" NeverOverwrite="yes">
    <File Id="settingsXml" KeyPath="yes" ShortName="SETTINGS.XML" Name="Settings.xml" DiskId="1" Source="\\fileserver\Release\Pathways\Dependencies\Settings\settings.xml" Vital="yes" />   
   </Component>



   <Component Id="Database" Guid="1D8756EF-FD6C-49BC-8400-299492E8C65D">
    <!--<RegistryValue Root="HKLM" Key="Software\TDR\Pathways\Database" Name="installed" Type="integer" Value="1" KeyPath="yes" />-->
    <File Id="pathwaysMdf" CompanionFile="pathwaysExe" Name="Pathways.mdf" DiskId="1" Source="\\fileserver\Shared\Databases\Pathways\SystemDBs\Pathways.mdf" Vital="yes"/>
    <File Id="pathwaysLdf" CompanionFile="pathwaysExe" Name="Pathways_log.ldf" DiskId="1" Source="\\fileserver\Shared\Databases\Pathways\SystemDBs\Pathways.ldf" Vital="yes"/>
   </Component>

  </DirectoryRef>

  <!-- shortcut components -->
  <DirectoryRef Id="DesktopFolder">
   <Component Id="DesktopShortcutComponent" Guid="1BF412BA-9C6B-460D-80ED-8388AC66703F">
    <Shortcut Id="DesktopShortcut"
        Target="[INSTALLDIR]Pathways.exe"
        Name="Pathways"
        Description="Pathways Tribal Directory"
        Icon="PathwaysIcon"
        Show="normal"
        WorkingDirectory="INSTALLDIR" />
    <RegistryValue Root="HKCU" Key="Software\TDR\Pathways" Name="installed" Type="integer" Value="1" KeyPath="yes"/>
   </Component>
  </DirectoryRef>

  <DirectoryRef Id ="ProgramsMenuPathwaysFolder">
   <Component Id="ProgramsMenuShortcutComponent" Guid="83A18245-4C22-4CDC-94E0-B480F80A407D">
    <Shortcut Id="ProgramsMenuShortcut" Target="[INSTALLDIR]Pathways.exe" Name="Pathways" Icon="PathwaysIcon" Show="normal" WorkingDirectory="INSTALLDIR" />
    <RemoveFolder Id="ProgramsMenuPathwaysFolder" On="uninstall"/>
    <RegistryValue Root="HKCU" Key="Software\TDR\Pathways" Name="installed" Type="integer" Value="1" KeyPath="yes"/>
   </Component>
  </DirectoryRef>


  <Feature Id="App" Title="Pathways Application" Level="1" Description="Pathways software" Display="expand" ConfigurableDirectory="INSTALLDIR" Absent="disallow" AllowAdvertise="no" InstallDefault="local">
   <ComponentRef Id="Application" />
   <ComponentRef Id="CommonAppDataPathwaysFolderComponent" />
   <ComponentRef Id="Settings"/>
   <ComponentRef Id="ProgramsMenuShortcutComponent" />
   <Feature Id="Shortcuts" Title="Desktop Shortcut" Level="1" Absent="allow" AllowAdvertise="no" InstallDefault="local">
    <ComponentRef Id="DesktopShortcutComponent" />
   </Feature>
  </Feature>


  <Feature Id="Data" Title="Database" Level="1" Absent="allow"  AllowAdvertise="no"  InstallDefault="local">
   <ComponentRef Id="Database" />
   <!--<ComponentRef Id="MDF"/>
   <ComponentRef Id="LDF"/>-->
  </Feature>

  <UIRef Id ="WixUI_FeatureTree"/>
  <UIRef Id="WixUI_ErrorProgressText"/>

  <UI>
   <Error Id="2000">There is a later version of this program installed.</Error>
  </UI>

  <CustomAction Id="NewerVersionDetected" Error="2000" />

  <InstallExecuteSequence>
   <RemoveExistingProducts After="InstallFinalize"/>
  </InstallExecuteSequence>

 </Product>

Проблема, с которой я столкнулся, заключается в том, что мне нужны два файла в компоненте базы данных для замены предыдущих копий. Поскольку эти файлы не версионные, я попытался использовать тег CompanionFile, установленный в PathwaysExe, поскольку это основной исполняемый файл приложения, и он обновляется, даже если в журнале говорится, что это не так! Самым странным в этом является то, что файл PathwaysLdf ОБНОВЛЯЕТСЯ ПРАВИЛЬНО, а файл PathwaysMdf - НЕТ. Кажется, что в журнале указано, что «Существующий файл имеет равную версию (проверено с использованием версии компаньона)». Это очень странно, потому что этот файл заменяется просто отлично.

Единственная идея, которую я оставил, заключается в том, что эта проблема связана с последовательностью установки, и я не уверен, что делать дальше! У меня установлен InstallExecuteSequence, как и я, из-за файла SettingsXml, и мне нужно НЕ перезаписывать этот файл, который на самом деле работает сейчас, поэтому любое решение, работающее с файлами базы данных, не может сломать файл рабочих настроек! ;)

Полный журнал находится по адресу: http://pastebin.com/HFiGKuKN

ПОЖАЛУЙСТА, И СПАСИБО!

1 Ответ

1 голос
/ 28 мая 2010

Попробуйте раннее планирование RemoveExistingProducts вместо позднего планирования, и вы должны быть в порядке.

<RemoveExistingProducts After="InstallInitialize" />
...