さて、私はWiXでやりたいことを実行できる唯一の方法を決定しました(私が今アップグレードしなければならないことを書いていなかった古いインストーラーのおかげで)いくつかのカスタムアクションを使用することです。
基本的に、RemoveExistingProductsの前にファイルをバックアップし、RemoveExistingProductsの後にそのファイルを再度復元する必要があります。これがいわゆる「タイプ2カスタムアクション」だと思います。
私が理解していると思う順序付けですが、私が理解していないのは、まず、データをC#アクション(ファイルがWiXからあるディレクトリ)に渡す方法と、C#(DTF?)アクションを参照する方法です。 BinaryタグとCustomActionタグ。
また、これらすべてをタグに含める必要がありますか?すべての例はそれをそのように示しています。
これが私がこれまでに.WXSファイルに持っているものです...
<Binary Id="backupSettingsAction.dll"
SourceFile="backupSettingsAction.CA.dll"/>
<CustomAction
Id="BackupSettingsAction"
BinaryKey="backupSettingsAction.dll"
DllEntry="CustomAction"
Execute="immediate" />
<InstallExecuteSequence>
<Custom Action="backupSettingsAction.dll" Before="InstallInitialize"/>
<RemoveExistingProducts After="InstallFinalize" />
<Custom Action="restoreSettingsAction.dll" After="RemoveExistingFiles"/>
</InstallExecuteSequence>
バックアップする必要のあるファイルは、前回のインストールの設定ファイル(そのままにしておく必要があります)で、次のディレクトリにあります。
<Directory Id="CommonAppDataFolder" Name="CommonAppData">
<Directory Id="CommonAppDataPathways" Name="Pathways" />
</Directory>
また、Componentタグもありますが、すでに存在するファイルをバックアップする必要があります。
<Component Id="Settings" Guid="A3513208-4F12-4496-B609-197812B4A953" NeverOverwrite="yes" >
<File Id="settingsXml" ShortName="SETTINGS.XML" Name="Settings.xml" DiskId="1" Source="\\fileserver\Release\Pathways\Dependencies\Settings\settings.xml" Vital="yes" />
</Component>
そして、これはVisual Studio(2005)が私のために作成したC#ファイルを参照しています。
namespace backupSettingsAction
{
public class CustomActions
{
[CustomAction]
public static ActionResult CustomAction1(Session session)
{
session.Log("backing up settings file");
//do I hardcode the directory and name of the file in here, or can I pass them in?
return ActionResult.Success;
}
}
}
どんな助けでも大いに感謝します。ありがとうございました!