在WiX主要升级中替换未版本控制的文件

时间:2010-05-26 21:00:05

标签: installer wix sequence major-upgrade

修改<!/强>

好的,进一步的检查和实验表明有问题的文件,即pathwaysMdf文件,正在安装!但是,在安装之后,它被RemoveFiles操作删除了!

我想这是因为该文件是原始安装的一部分,所以它正在执行卸载和清理工作。哎呀!我该怎么办?!

我仍然遇到这个问题。这是我最接近一个有效的解决方案,但它并没有完全奏效。这是(大部分)代码:

     <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文件不是。该日志似乎表明“现有文件具有相同的版本(使用随播版本检查)”。这很奇怪,因为该文件被替换得很好。

我唯一的想法是这个问题与安装顺序有关,我不知道如何继续!由于SettingsXml文件,我的InstallExecuteSequence设置与我一样,并且我不需要覆盖该文件,这实际上正在工作,因此无论数据库文件的解决方案是什么,都无法破坏工作设置文件! ;)

完整日志位于: http://pastebin.com/HFiGKuKN

请谢谢!

1 个答案:

答案 0 :(得分:1)

尝试RemoveExistingProducts的早期安排,而不是延迟安排,你应该没事。

<RemoveExistingProducts After="InstallInitialize" />