WiX重大升级拒绝替换现有文件! [英] WiX major upgrade refuses to replace existing file!

查看:129
本文介绍了WiX重大升级拒绝替换现有文件!的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

编辑!

在第一次发布时,如何看待这里的一个问题是很粗糙的,但是当一个问题被问到然后被回答时,对我来说似乎已经被抛弃了.我仍然遇到这个问题,不确定该怎么办.

It's rough how a question on here seems to get seen when first posted, but when a question is asked, and then answered, for me it seems abandoned. I am still having this problem, and not sure what to do.

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

Hello! I have inherited this project with a WiX installer, and am required to make this version usefully upgrade the previous one! My problem comes in replacing the database files with new versions. No, the problem is not that they are locked, I can replace them manually, and in fact now ONE of them is replaced, while the other is not. Please, please tell me what I'm doing wrong here. I've tried several other solutions (including registry keys as KeyPath instead of CompanionFile) but nothing is quite working.

(大部分).WXS文件的代码在这里:

Here is (most of) the code of the .WXS file:

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

运行此安装程序,尝试从以前的版本ALMOST WORKS进行升级.给我麻烦的文件是一个叫做"PathwaysMdf"的文件.即使其组件代码与PathwaysLdf文件完全相同,该文件也会被替换,而MDF则不是.注释掉了,您可以看到我尝试过的其他一些事情,其中​​一些来自关于stackoverflow的建议.

Running this installer attempting the upgrade from the previous version ALMOST WORKS. The file that is giving me trouble is the one called "PathwaysMdf". Even though it's Component code is EXACTLY the same as the PathwaysLdf file, that file is replaced, while the MDF is NOT. You can see, commented out, some of the other things I've attempted, some from suggestions on stackoverflow.

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

The entire log file from running the upgrade is located at: http://pastebin.com/ppjhq6Wi

谢谢! 约书亚

推荐答案

您是否遵循组成规则?

为什么每个组件不使用一个文件?组件中的多个文件非常丑陋,非常快速.

Why are you not using one file per component? Multiple files in a component gets very ugly, very quickly.

(请注意,这实际上不是WiX问题,但由于违反组件规则,很可能是Windows Installer问题)

(Note that this isn't really a WiX issue, but more likely to be a Windows Installer issue due to violation of component rules)

这篇关于WiX重大升级拒绝替换现有文件!的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆