Wix ツールセットの Heat を使用してインストーラー用のコンポーネントを生成しますが、ユーザーごとのインストーラーはほとんどないため、Heat の Autogenerate Guids を使用できません。GUID をランダムに生成することはできますが、コンポーネント ルールのため、これは望ましくありません。
したがって、各ファイルの静的 GUID を追加した生成された構造とは異なる構造で、インストールに含める必要があるファイルのリストを含む XML があります。私がやりたいことはfilename
、自分の XML と生成された XML を一致させ、生成された XML に GUID を挿入することです。
以下は、変換を行わない xml のサンプルです。
<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Fragment>
<DirectoryRef Id="Dir_Sample">
<Directory Id="Folder1" Name="Folder1">
<Component Id="NewTextFile0.txt" Guid="PUT-GUID-HERE">
<File Id="NewTextFile0.txt" KeyPath="yes" Source="$(var.sample)\Folder1\NewTextFile0.txt" />
</Component>
</Directory>
</DirectoryRef>
</Fragment>
<Fragment>
<ComponentGroup Id="CG_Sample">
<ComponentRef Id="NewTextFile0.txt" />
</ComponentGroup>
</Fragment>
</Wix>
各ファイルの GUID を含むカスタム XML は次のとおりです。
<?xml version="1.0" encoding="utf-8"?>
<FileSystemList>
<File Path="\Programs\Folder1\NewTextFile0.txt" Guid="52B62A6E-DD87-424A-8296-3AA00E74AEF8" />
</FileSystemList>
したがって、ファイル名とできれば親フォルダーが両方の XML で一致する場合は、Guid="PUT-GUID-HERE
「」を に置き換えてください。Guid="52B62A6E-DD87-424A-8296-3AA00E74AEF8"
XSL を理解しようとしていますが、達成できるのは脱毛だけです。私と私の残りの髪はどんな助けにも感謝します.
更新: これら 2 つの xml ファイル間の照合Source
は、最初のファイルとPath
2 番目のファイルで実行する必要があります。
Source="$(var.sample)\Folder1\NewTextFile0.txt"
ファイル名 (NewTextFile0.txt) と親フォルダー (Folder1) は、プロジェクト内で一意です。同じことが、Path="\Programs\Folder1\NewTextFile0.txt"
ファイル名と親フォルダーが一意であることにも当てはまります。