WiX主要升级拒绝替换现有的文件!

问题描述:

编辑!WiX主要升级拒绝替换现有的文件!

这很简单,这里的问题似乎在首次发布时看到,但当问到问题,然后回答时,对我来说似乎已经放弃了。我仍然有这个问题,不知道该怎么做。

您好!我用WiX安装程序继承了这个项目,并且需要使此版本有效地升级上一个版本!我的问题是用新版本替换数据库文件。不,问题不在于它们被锁定,我可以手动更换它们,事实上现在其中一个被替换,而另一个不是。请告诉我我在这里做错了什么。我已经尝试了其他几个解决方案(包括注册表项作为KeyPath而不是CompanionFile),但没有任何工作。

这里是(最)的.WXS文件的代码:

<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="no" 
    Language="1033" 
    Property="NEWAPPFOUND" 
    /> 
    </Upgrade> 

    <Property Id="ALLUSERS">2</Property> 

    <!-- 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"> 
       <!--<netfx:NativeImage Id="ngen_Pathways.exe" Platform="32bit" Priority="2"/> --> 
      </File> 

      <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" Name="Pathways.mdf" DiskId="1" Source="\\fileserver\Shared\Databases\Pathways\SystemDBs\Pathways.mdf" CompanionFile="pathwaysExe" Vital="yes"/> 
      <File Id="pathwaysLdf" Name="Pathways_log.ldf" DiskId="1" Source="\\fileserver\Shared\Databases\Pathways\SystemDBs\Pathways.ldf" CompanionFile="pathwaysExe" Vital="yes"/> 

     </Component> 



     <!-- 
    <Component Id="MDF" Guid="FFB7CE02-B592-4c44-A315-99CF4828E3D9" > 
    <File Id="pathwaysMdf" KeyPath="yes" Name="Pathways.mdf" DiskId="1" Source="\\fileserver\Shared\Databases\Pathways\SystemDBs\Pathways.mdf" /> 
    </Component> 

    <Component Id="LDF" Guid="9E4E3DCA-A067-47f4-9905-4AD5C35A8025" > 
    <File Id="pathwaysLdf" KeyPath="yes" Name="Pathways_log.ldf" DiskId="1" Source="\\fileserver\Shared\Databases\Pathways\SystemDBs\Pathways.ldf" /> 
    </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" /> 
    </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> 

运行该安装程序尝试从以前的版本升级概工程。给我带来麻烦的文件是名为“PathwaysMdf”的文件。即使它的组件代码与PathwaysLdf文件完全相同,该文件将被替换,而MDF不是。你可以看到,注释掉了我尝试过的其他一些东西,其中一些来自于*的建议。

运行升级整个日志文件位于: http://pastebin.com/ppjhq6Wi

THANK YOU! 约书亚

+0

刚提的是路径:'\\文件服务器\发布\途径\依赖\'可以用定义的变量替换,以及... – Eli 2015-11-04 15:11:56

你为什么要设置这些文件为“pathwaysExe”的CompanionFile属性?在此过程中,您要求Windows Installer根据是否更新这些文件来决定是否更新“pathwaysExe”。由于“pathwaysExe”版本没有更改(因此Windows Installer不会更新它),因此其他文件同样不会更新。

顺便说一句,你说.ldf文件更新...你确定吗?您发布的日志文件指示了其他情况。

+1

我设置CompanionFile因为MDF和LDF文件是未版本化,并PathwaysExe的版本。 PathwaysExe正在更新,它是应用程序的主要可执行文件。 是的,我很肯定的是,LDF文件正在更新...我会重新检查现在虽然。 – Joshua 2010-05-19 20:03:17

+0

是的,PathwaysExe和PathwaysLdf文件正在被更新,并且PathwaysMdf文件在升级后消失。 你可以看到为什么我很困惑。 ;) – Joshua 2010-05-19 20:18:02

您是否按照component rules

你为什么不使用每个组件一个文件?组件中的多个文件非常快速地变得非常难看。

(请注意,这是不是一个真正的WiX的问题,但更可能是一个Windows安装程序的问题,由于违反规则的成分)

+0

我无法在这些组件规则中发现我应该为每个组件创建一个文件。 LDF和MDF文件集合在一起,没有彼此的用处,所以我认为将它们作为一个组件是有意义的。即使它们是一个组件,其中一个组件正确覆盖,另一个不是。 阅读这些规则并不能揭示我破坏它们的地方。 – Joshua 2010-05-20 19:14:38