2012-01-19 7 views
6

こんにちは私は以下のコードでWIXを使用してディレクトリにファイルをインストールしています。WIXインストールファイル、オーバーライド

<Directory Id="CMSICONSDIR" Name="CMSIcons"> 
    <Component Id="CMSICONSDIR_C" Guid="B0328FBF-D9F7-4278-B16C-28650016FF86" SharedDllRefCount="no" KeyPath="no" NeverOverwrite="no" Permanent="no" Transitive="no" Location="either"> 
     <CreateFolder/> 
     <File Id="AddCamera.png" Name="AddCamera.png" DiskId="1" Source="..\..\OrionVEWorld\bin\Release\CMSICons\AddCamera.png" KeyPath="no" /> 
     <File Id="aldownloadsmall.png" Name="al-download-small.png" DiskId="1" Source="..\..\OrionVEWorld\bin\Release\CMSICons\al-download-small.png" KeyPath="no" /> 

私のアプリケーションの仕組みは、ユーザーが好みのものを上書きして自分のファイルをそのディレクトリにコピーできるということです。

問題は、次回のアップデートのインストール時に、インストール時に指定されたファイルでこれらのファイルを上書きする場合です。

インストールを実行するときに、そこにある既存のファイルが上書きされず、新しいファイルのみが追加されることを確認します。

残念ながら、私はそこにあるものを上書きするファイルが必要です。

私は、任意の提案が高く評価され

<Upgrade Id="$(var.UpgradeCode)"> 
    <UpgradeVersion Minimum="$(var.ProductVersion)" OnlyDetect="no" Property="NEWERVERSIONDETECTED"/> 
    <UpgradeVersion Minimum="1.0.0.0" 
        IncludeMinimum="yes" 
        OnlyDetect="no" 
        Maximum="$(var.ProductVersion)" 
        IncludeMaximum="no" 
        Property="PREVIOUSVERSIONSINSTALLED" /> 
</Upgrade> 

以下のようにこれに影響を与える可能性がアップグレードスクリプトセクションを持っています。

答えて

5

RemoveExistingProductsアクションのシーケンスを変更してアップグレード順序を変更してみることもできます。あなたはInstallFinalizeの後に置くことができます(リンク記事では4つのオプションはありません)。

また、thisの記事では、Windowsインストーラがファイル全体の上書きロジックをどのように処理するかについて説明しています。

EDIT:コンポーネントに「上書きしない」属性も追加します。

+0

完了 <がInstallExecuteSequence> 、私のコンポーネントでNeverOverwrite = "yes" を常設= "はい" を行なったし、それはまだ私の以前のファイルを上書きします。私が間違っていることを確認しない – TheWommies

2

コンポーネントにNeverOverwrite属性を追加してみてください。それはトリックを行う必要があります。

+0

RemoveExistingProductsアクションがInstallExecuteの前にある場合、これでは不十分です。 – Ciprian

+0

@Ciprian - デフォルトでInstallExecute後にRemoveExistingProductsアクションをWIXスケジュールしませんか? – imagi

+0

これは間違いないかもしれません。私はWIXに関する広範囲の知識を持っていません。 – Ciprian