私は簡単なインストーラパッケージを提供しようとしています以前のすべてのパッチを置き換える更新プログラム(パッチ)でサポートしたいと思っていたMSI(MSI)私はMSI V1.0.0と2つのパッチV1.0.1とV1.0.2を持っています。以前のパッチがすでにシステムに適用されているかどうかにかかわらず、最新のパッチをインストールするだけで済みます。私のプロジェクトには2つの機能(クライアントとサーバー)が含まれています。パッチの基礎は常にRTMパッケージ(HelloWorld 1.0.msi/HelloWorld 1.0.wixpdb)です。WiX:以前のバージョンに置き換わるパッチインストーラ(1.0.0 - > 1.0.1,1.0.0 - > 1.0.2,1.0.1 - > 1.0.2、aso)
すべてのパッチの生成(ビルド)が機能するので、1.0.1 - > 1.0.1 - > 1.0.1と1.0.0 - > 1.0.2のアップデート手順は同じですが、1.0.1から1.0にアップデートしようとします。 2アップグレードの対象となるプログラムが見つからないか、またはアップグレードのパッチによって異なるバージョンのプログラムが更新される可能性があるため、Windowsインストーラサービスでアップグレードパッチをインストールすることはできません。お使いのコンピュータにアップグレードされており、正しいアップグレードパッチが適用されていることを確認してください。 "さらに悪いことに、1.0.2がすでにインストールされているシステムで1.0.1パッチを実行すると、パッチは既存のインストールを古いバージョンで上書きします!私は完全に混乱しています...
私はまた、パッチに関するWeb上のいくつかのブログエントリを見つけましたが、私の代わりのszenarioで動作するものはありません。
のWiXのパッチコード - "patch1.wxs":
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Patch
AllowRemoval="yes"
Manufacturer="My Company"
MoreInfoURL="http://www.mycompany.com/"
DisplayName="HelloWorld V1.0 Patch 1"
Description="Patch intaller updating HelloWorld V1.0.x to V1.0.1"
Classification="Update">
<Media Id="32000" Cabinet="HelloWorldRTM.cab">
<PatchBaseline Id="HelloWorldRTM">
<Validate ProductId="yes" UpgradeCode="yes" ProductVersionOperator="LesserOrEqual" />
</PatchBaseline>
</Media>
<PatchFamilyRef Id="HelloWorldPatchFamily"/>
</Patch>
<Fragment>
<PatchFamily Id='HelloWorldPatchFamily' Version='1.0.1.0' Supersede='yes'>
<PropertyRef Id="ProductVersion"/>
<ComponentRef Id="HelloWorldServer.dll"/>
</PatchFamily>
</Fragment>
</Wix>
パッチ1つのビルドスクリプト - "generate_patch1.bat":
"%WIX%\bin\torch.exe" -p -xi ".\_Distrb\HelloWorld 1.0.wixpdb" ".\_Distrb\HelloWorld 1.0.1.wixpdb" -out ".\_Build\patch1.wixmst"
"%WIX%\bin\candle.exe" -out ".\_Build\patch1.wixobj" ".\patch1.wxs"
"%WIX%\bin\light.exe" ".\_Build\patch1.wixobj" -out ".\_Build\patch1.wixmsp"
"%WIX%\bin\pyro.exe" ".\_Build\patch1.wixmsp" -out ".\_Distrb\HelloWorld 1.0 Patch1.msp" -t HelloWorldRTM ".\_Build\patch1.wixmst"
WiXのパッチ適用コード - "patch2.wxs":
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Patch
AllowRemoval="yes"
Manufacturer="My Company"
MoreInfoURL="http://www.mycompany.com/"
DisplayName="HelloWorld V1.0 Patch 2"
Description="Patch intaller updating HelloWorld V1.0.x to V1.0.2"
Classification="Update">
<Media Id="32000" Cabinet="HelloWorldRTM.cab">
<PatchBaseline Id="HelloWorldRTM">
<Validate ProductId="yes" UpgradeCode="yes" ProductVersionOperator="LesserOrEqual" />
</PatchBaseline>
</Media>
<PatchFamilyRef Id="HelloWorldPatchFamily"/>
</Patch>
<Fragment>
<PatchFamily Id='HelloWorldPatchFamily' Version='1.0.2.0' Supersede='yes'>
<PropertyRef Id="ProductVersion"/>
<ComponentRef Id="HelloWorldServer.dll"/>
<ComponentRef Id="HelloWorld.exe"/>
</PatchFamily>
</Fragment>
</Wix>
パッチ2ビルドスクリプト - "generate_patch2.bat":
"%WIX%\bin\torch.exe" -p -xi ".\_Distrb\HelloWorld 1.0.wixpdb" ".\_Distrb\HelloWorld 1.0.2.wixpdb" -out ".\_Build\patch2.wixmst"
"%WIX%\bin\candle.exe" -out ".\_Build\patch2.wixobj" ".\patch2.wxs"
"%WIX%\bin\light.exe" ".\_Build\patch2.wixobj" -out ".\_Build\patch2.wixmsp"
"%WIX%\bin\pyro.exe" ".\_Build\patch2.wixmsp" -out ".\_Distrb\HelloWorld 1.0 Patch 2.msp" -t HelloWorldRTM ".\_Build\patch2.wixmst"
パッチの作成には、「パッチ作成プロパティの使用」または「Purely WiXの使用」という2つの方法があります。 「Purely WiXの使用」(使用方法)に問題があった後は、問題なく「パッチ作成プロパティの使用」を使用します。リンク:http://wix.sourceforge.net/manual-wix3/patching.htm –
これをどのように解決しましたか? – boli
@boli:残念ながら。私たちはそれを却下し、現在はアンインストールして、エレガントではないにもかかわらず動作するすべてのものを再インストールします。 :(+ – moik