3

Wix 3.6アプリケーションのすべての要素を正常にインストールするインストーラーを開発しました。

今、より高いバージョンの を提供するたびにmsi、インストーラーがユーザーにそれをアンインストールするように促します。今から私はこれを試しました:

<Product 
Id="*" 
Name="!(loc.ProductName)" 
Language="3082" 
Codepage="1252"
Version="1.0.1"
Manufacturer="$(var.ProductManufacturer)" 
UpgradeCode="$(var.UpgradeCode)">

<Property Id="PREVIOUSVERSIONINSTALLED" Secure="yes" />
<Upgrade Id="$(var.UpgradeCode)">
  <UpgradeVersion Minimum="1.0.0.0" Maximum="99.9.9.9" IncludeMiminum="yes" IncludeMaximum="no" Property="PREVIOUSVERSIONSINSTALLED" />
</Upgrade>

<InstallExecuteSequence>
  <RemoveExistingProducts Before="InstallInitialize" />
</InstallExecuteSequence>

このコードは、コンピューターにインストールされている以前のバージョンを正常にアンインストールします。ただし、ユーザーが確実にそうするかどうかは尋ねません。

必要なのは、次のようなメッセージをユーザーに表示させる Wix インストーラーです。

[ProductName] の以前のバージョンがインストールされています。アンインストールしますか?[ はい | いいえ]オプション。

ユーザーにプロンプ​​トを表示して、以前のバージョンを本当にアンインストールするかどうかを確認する方法はありますか?

4

2 に答える 2

2

同じ問題を解決するときに、この投稿が役立つことがわかりました。upgradeタグで設定した PREVIOUSVERSIONINSTALLED プロパティを使用して、カスタム ダイアログを開くことができます。次のコードを追加して、一部の UI タグ内でこれを行います (標準のウェルカム ダイアログを使用する場合)。

<Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="OldVersionDlg">PREVIOUSVERSIONSINSTALLED</Publish>
<Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="SetupTypeDlg">NOT Installed AND NOT PREVIOUSVERSIONSINSTALLED</Publish>

この Wix チュートリアルに基づいて独自のカスタム ダイアログを作成し、最終的に次のコードを作成しました。

 <Dialog Id="OldVersionDlg" Width="260" Height="85" Title="[ProductName] Setup" NoMinimize="yes">
        <Control Id="No" Type="PushButton" X="132" Y="57" Width="56" Height="17"
          Default="yes" Cancel="yes" Text="No">
          <Publish Event="EndDialog" Value="Exit">1</Publish>
        </Control>
        <Control Id="Yes" Type="PushButton" X="72" Y="57" Width="56" Height="17" Text="Yes">
          <Publish Event="EndDialog" Value="Return">1</Publish>
        </Control>
        <Control Id="Text" Type="Text" X="48" Y="15" Width="194" Height="30">
          <Text>A previous version of [ProductName] is currently installed. By continuing the installation this version will be uninstalled. Do you want to continue?</Text>
        </Control>
</Dialog>
于 2015-10-09T11:08:56.657 に答える
2

Windows インストーラ アップグレード テーブルには、WiX の UpgradeVersion@OnlyDetect 属性によって表される msidbUpgradeAttributesOnlyDetect という属性ビットがあります。

適切に作成された場合、FindRelatedProducts は、検出された製品の ProductCode GUID を使用して選択したアクション プロパティを設定します。ただし、自動削除のためにこれを RemoveExistingProducts に渡すことはありません。

典型的な動作ではありませんが、このプロパティに値がある場合にトリガーされる UI を作成することを妨げるものは何もありません。古いバージョンを削除するかどうかをユーザーに尋ね、削除する場合は別のアクション プロパティを設定して、RemoveExistingProducts に伝えることができます。(ヒント: それ自体では製品を見つけることができないアップグレードを作成し、そのプロパティをハイジャックして削除を挿入します。)

ユーザーが「いいえ」と言った場合、インストールを中止するか、別のディレクトリ構造に並べてインストールを続行するかを選択できます。(Office、Visual Studio など)。

于 2013-07-31T19:10:57.550 に答える