質問

コンポーネントが変更されていない場合、アップグレードは正常に機能しますが、コンポーネントが変更されるたびにアップグレードが失敗し、ユーザーが手動でアンインストールおよび再インストールする必要があります。

一部のスニペット:

<Product Id="*" Name="My Application" Language="1033" Version="!(bind.FileVersion.ClientEXE)" Manufacturer="My Company" UpgradeCode="MYGUID-b94a-44eb-8e92-9286f1d89bbd">
    <Package Id="*" Description="My Installer" Comments="Copyright My Company 2008" InstallerVersion="200" Compressed="yes" />
    <Upgrade Id="MYGUID-b94a-44eb-8e92-9286f1d89bbd">
      <UpgradeVersion Language="1033" Property="UPGRADEFOUND" Minimum="0.0.0.0" Maximum="99.99.99.99" IncludeMinimum="yes" IncludeMaximum="yes" />
    </Upgrade>


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

また、アンインストール時に次のレジストリキーが削除されないことがあり、その理由がわかりません。

      <Component Id="InstalledRegistry" Guid="SOMEGUID-0a17-4c6b-983d-8f3feb3a7724">
        <RegistryKey Id="InstalledRegKey" Root="HKMU" Key="SOFTWARE\MyCompany\Client" Action="createAndRemoveOnUninstall">
          <RegistryValue Name="Version" Type="string" Value="!(bind.FileVersion.ClientEXE)" KeyPath="yes"/>
        </RegistryKey>
      </Component>

これは、ブートストラップがmsiexecを&quot; REINSTALL = ALL REINSTALLMODE = vamus&quot;で起動するかどうかを確認するためにチェックするものです。またはそうではないので、アンインストールされたがレジストリキーが削除されなかった場合、セットアップはアップグレードを試行し、サイレントに失敗します。

さらに情報が必要かどうかを教えてください


編集:その後、いくつかのファイルのみが更新されるという別の問題がありました。 RemoveExistingProductsをAfter =&quot; InstallValidate&quot;に変更しました。そしてそれはそれを解決しました。変更されたファイルをアップグレードするのではなく、以前のインストールを完全に削除するので、少し遅くなります(私にとっては適切に検出されなかったようですが)、仕事は完了します。

役に立ちましたか?

解決

FWIW、メジャーアップグレードを実行するためにコマンドライン引数は必要ありません。

コードは問題ないように見えるので、バージョン番号が変更されていない可能性がありますか? (Windowsインストーラーは、4つの部分からなるバージョン番号を使用している場合、最初の3つの部分のみを考慮することに注意してください)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top