Deployment WIX-修补安装后无法修补安装

Deployment WIX-修补安装后无法修补安装,deployment,wix,wix3.5,setup-deployment,Deployment,Wix,Wix3.5,Setup Deployment,这里需要一点帮助 错误:Windows Installer服务无法安装升级修补程序,因为要升级的程序可能丢失,或者升级修补程序可能会更新程序的其他版本。验证您的计算机上是否存在要升级的程序,以及您是否有正确的升级修补程序 我已经做了以下工作 已创建MSI版本1.0(自动创建GUID),ProductId=“*” 针对1.0.wixpdb,版本1.1(已设置更新代码),ProductId=“{GUID1}”,pyro针对1.0.wixpdb创建了一个补丁(MSP),并警告更改产品代码 针对1.1.

这里需要一点帮助

错误:Windows Installer服务无法安装升级修补程序,因为要升级的程序可能丢失,或者升级修补程序可能会更新程序的其他版本。验证您的计算机上是否存在要升级的程序,以及您是否有正确的升级修补程序

我已经做了以下工作

  • 已创建MSI版本1.0(自动创建GUID),ProductId=“*”
  • 针对1.0.wixpdb,版本1.1(已设置更新代码),ProductId=“{GUID1}”,pyro针对1.0.wixpdb创建了一个补丁(MSP),并警告更改产品代码
  • 针对1.1.wixpdb版本1.2创建了另一个补丁(MSP)(保留相同的更新代码)。ProductId=“{GUID1}”,无法安装
  • 场景。。。 安装MSI v1.0->安装MSP 1.1=工作正常

    安装MSI v1.0->安装MSP 1.1->安装MSP 1.2=失败,windows找不到该应用程序

    安装MSI v1.1->安装MSP 1.2=工作正常

    对我来说,这意味着当第一个补丁(1.1)出现故障时,可能没有更新,或者在创建补丁1.2时,我需要考虑1.0和1.1。我尝试了各种选择,从使用到在

    有什么想法吗

    更新/修补程序代码

    Product.wxs

    <?xml version="1.0" encoding="UTF-8"?>
    <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
        <Product Id="*"
            Name="WiX Patch Example Product"
            Language="1033"
            Version="1.0.0"
            Manufacturer="Dynamo Corporation"
            UpgradeCode="48C49ACE-90CF-4161-9C6E-9162115A54DD">
    
            <Package Description="Installs a file that will be patched."
                Comments="This Product does not install any executables"
                InstallerVersion="200"
                Compressed="yes" />
    
            <Media Id="1" Cabinet="product.cab" EmbedCab="yes" />
            <FeatureRef Id="SampleProductFeature"/>
    
        </Product>
    
        <Fragment>
            <Feature Id="SampleProductFeature" Title="Sample Product Feature" Level="1">
                <ComponentRef Id="File_1.txt" />
                <ComponentRef Id="File_2.txt" />
                <ComponentRef Id="File_3.txt" />
    
            </Feature>
        </Fragment>
    
        <Fragment>
            <DirectoryRef Id="SampleProductFolder">
                <Component Id="File_1.txt" Guid="{d738b2a9-0dbc-4381-9efd-5801723b1569}" DiskId="1">
                    <File Id="File_1.txt" Name="File 1.txt" Source=".\$(var.Version)\File 1.txt" />             
                </Component>
                <Component Id="File_2.txt" Guid="{b9b267a3-5648-4e32-9ab1-f3032980f6c2}" DiskId="1">
                    <File Id="File_2.txt" Name="File 2.txt" Source=".\$(var.Version)\File 2.txt" />             
                </Component>
                <Component Id="File_3.txt" Guid="{1df728ae-333d-47c5-9558-c0923f958a8d}" DiskId="1">                
                    <File Id="File_3.txt" Name="File 3.txt" Source=".\$(var.Version)\File 3.txt" />
                </Component>            
    
            </DirectoryRef>
        </Fragment>
    
        <Fragment>
            <Directory Id="TARGETDIR" Name="SourceDir">
                <Directory Id="ProgramFilesFolder" Name="PFiles">
                    <Directory Id="SampleProductFolder" Name="Patch Sample Directory">
                    </Directory>
                </Directory>
            </Directory>
        </Fragment>
    </Wix>
    
    
    
    产品1.1.wxs

    <?xml version="1.0" encoding="UTF-8"?>
    <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
        <Product Id="48C49ACE-90CF-4161-9C6E-9162115A54DD"
            Name="WiX Patch Example Product"
            Language="1033"
            Version="1.1.0"
            Manufacturer="Dynamo Corporation"
            UpgradeCode="48C49ACE-90CF-4161-9C6E-9162115A54DD">
    
            <Package Description="Installs a file that will be patched."
                Comments="This Product does not install any executables"
                InstallerVersion="200"
                Compressed="yes" />
    
            <Media Id="1" Cabinet="product.cab" EmbedCab="yes" />
            <FeatureRef Id="SampleProductFeature"/>
    
        </Product>
    
        <Fragment>
            <Feature Id="SampleProductFeature" Title="Sample Product Feature" Level="1">
                <ComponentRef Id="File_1.txt" />
                <ComponentRef Id="File_2.txt" />
                <ComponentRef Id="File_3.txt" />
    
                <ComponentRef Id="File_4.txt" />
            </Feature>
        </Fragment>
    
        <Fragment>
            <DirectoryRef Id="SampleProductFolder">
                <Component Id="File_1.txt" Guid="{d738b2a9-0dbc-4381-9efd-5801723b1569}" DiskId="1">
                    <File Id="File_1.txt" Name="File 1.txt" Source=".\$(var.Version)\File 1.txt" />             
                </Component>
                <Component Id="File_2.txt" Guid="{b9b267a3-5648-4e32-9ab1-f3032980f6c2}" DiskId="1">
                    <File Id="File_2.txt" Name="File 2.txt" Source=".\$(var.Version)\File 2.txt" />             
                </Component>
                <Component Id="File_3.txt" Guid="{1df728ae-333d-47c5-9558-c0923f958a8d}" DiskId="1">                
                    <File Id="File_3.txt" Name="File 3.txt" Source=".\$(var.Version)\File 3.txt" />
                </Component>
    
    
                <Component Id="File_4.txt" Guid="{f728f62d-91f4-4c78-b2fe-65a9f0f6043c}" DiskId="1">                
                    <File Id="File_4.txt" Name="File 4.txt" Source=".\$(var.Version)\File 4.txt" />
                </Component>        
            </DirectoryRef>
        </Fragment>
    
        <Fragment>
            <Directory Id="TARGETDIR" Name="SourceDir">
                <Directory Id="ProgramFilesFolder" Name="PFiles">
                    <Directory Id="SampleProductFolder" Name="Patch Sample Directory">
                    </Directory>
                </Directory>
            </Directory>
        </Fragment>
    </Wix>
    
    
    
    产品1.2.wxs

    <?xml version="1.0" encoding="UTF-8"?>
    <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    
        <Product Id="48C49ACE-90CF-4161-9C6E-9162115A54DD"  
            Name="WiX Patch Example Product"
            Language="1033"
            Version="1.2.0"
            Manufacturer="Dynamo Corporation"
            UpgradeCode="48C49ACE-90CF-4161-9C6E-9162115A54DD">
    
            <Package Description="Installs a file that will be patched."
                Comments="This Product does not install any executables"
                InstallerVersion="200"
                Compressed="yes" />
    
            <Media Id="1" Cabinet="product.cab" EmbedCab="yes" />
            <FeatureRef Id="SampleProductFeature"/>
    
        </Product>
    
        <Fragment>
            <Feature Id="SampleProductFeature" Title="Sample Product Feature" Level="1">
                <ComponentRef Id="File_1.txt" />
                <ComponentRef Id="File_2.txt" />
                <ComponentRef Id="File_3.txt" />
    
                <ComponentRef Id="File_4.txt" />
            </Feature>
        </Fragment>
    
        <Fragment>
            <DirectoryRef Id="SampleProductFolder">
                <Component Id="File_1.txt" Guid="{d738b2a9-0dbc-4381-9efd-5801723b1569}" DiskId="1">
                    <File Id="File_1.txt" Name="File 1.txt" Source=".\$(var.Version)\File 1.txt" />             
                </Component>
                <Component Id="File_2.txt" Guid="{b9b267a3-5648-4e32-9ab1-f3032980f6c2}" DiskId="1">
                    <File Id="File_2.txt" Name="File 2.txt" Source=".\$(var.Version)\File 2.txt" />             
                </Component>
                <Component Id="File_3.txt" Guid="{1df728ae-333d-47c5-9558-c0923f958a8d}" DiskId="1">                
                    <File Id="File_3.txt" Name="File 3.txt" Source=".\$(var.Version)\File 3.txt" />
                </Component>
    
    
                <Component Id="File_4.txt" Guid="{f728f62d-91f4-4c78-b2fe-65a9f0f6043c}" DiskId="1">                
                    <File Id="File_4.txt" Name="File 4.txt" Source=".\$(var.Version)\File 4.txt" />
                </Component>        
            </DirectoryRef>
        </Fragment>
    
        <Fragment>
            <Directory Id="TARGETDIR" Name="SourceDir">
                <Directory Id="ProgramFilesFolder" Name="PFiles">
                    <Directory Id="SampleProductFolder" Name="Patch Sample Directory">
                    </Directory>
                </Directory>
            </Directory>
        </Fragment>
    </Wix>
    
    
    
    补丁1.1

    <?xml version="1.0" encoding="UTF-8"?>
    <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
        <Patch 
            AllowRemoval="yes"
            Manufacturer="Dynamo Corp" 
            MoreInfoURL="http://www.dynamocorp.com/"
            DisplayName="Sample Patch" 
            Description="Small Update Patch" 
            Classification="Update"
            OptimizedInstallMode="yes">
    
            <Media Id="8000" Cabinet="RTM.cab" CompressionLevel="none">
                <PatchBaseline Id="RTM">
    
                </PatchBaseline>
            </Media>
    
            <PatchFamilyRef Id="SamplePatchFamily"/>    
        </Patch>
    
        <Fragment>    
            <PatchFamily Id='SamplePatchFamily' Version='1.1.0' Supersede='no'>
    
    
            </PatchFamily>
        </Fragment>
    </Wix>
    
    
    
    补丁1.2

    <?xml version="1.0" encoding="UTF-8"?>
    <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
        <Patch 
            AllowRemoval="yes"
            Manufacturer="Dynamo Corp" 
            MoreInfoURL="http://www.dynamocorp.com/"
            DisplayName="Sample Patch" 
            Description="Small Update Patch" 
            Classification="Update"
            OptimizedInstallMode="yes">
    
            <Media Id="8000" Cabinet="RTM.cab" CompressionLevel="none">
                <PatchBaseline Id="RTM">
    
                </PatchBaseline>
            </Media>
    
            <PatchFamilyRef Id="SamplePatchFamily"/>    
        </Patch>
    
        <Fragment>    
            <PatchFamily Id='SamplePatchFamily' Version='1.2.0' Supersede='no'>
    
    
            </PatchFamily>
        </Fragment>
    </Wix>
    
    
    
    您需要一个全面的静态产品id。您可以使用Orca进入并从1.0 msi中查找产品id。在1.1和1.2 product.wxs ProductId中使用该guid。

    使ProductId为静态将有助于修补方案,下一个修补程序都可以使用

    但请记住,在1.3版补丁(甚至1.0版msi)之后运行.msi(例如1.5版)将失败,并显示“已安装产品的其他版本…”消息。因此,当您坚持使用相同的产品id时,请仅提供修补程序(.msp,从.msi创建),当您希望提供新的.msi时,请确保更改产品id

    我回答这个问题肯定太迟了,但我只是在这个问题上浪费了整整一天的时间,决定把它挂起来,这样其他人就不必这么做了

    我猜MSI+MSP更新的两个规则是:

  • 切勿使用不同的产品ID从MSI制作修补程序,它们将无法找到产品,并且不会运行

  • 永远不要为不同的MSI提供相同的产品ID,它们将在“安装了另一个版本”时失败,并且不会运行


  • 如果一个不同的MSI只是用相同的产品ID重写了上一个MSI,这会简单得多,但这肯定有一个很好的原因…

    问题似乎是,在构建MSI时,使用了自动生成的GUID。当修补程序1.1使用不同的GUID时。。。有什么方法可以纠正这个问题或者至少对1.2进行更新吗?我已经尝试过创建一个从1.0到1.2,从1.1到1.2的wixmst,但仍然不起作用。。。