我想阅读 MSI 的安装目录。当目录表中的“INSTALLDIR”、“INSTALLDIRECTORY”或“INSTALLLOCATION”指定安装目录时,我能够读取安装目录。但是许多 msis 不包含“INSTALLDIR”左右。那么如何确定特定msi的安装目录是什么。
是否有任何特定的关键字列表可用于指定安装目录,因为有些 msi 包含 INSTALLDIR,有些包含 INSTALDIRECTORY,有些包含 INSTALLLOCATION。
我正在使用以下代码片段来获取安装目录
DataTable directoryTable;
directoryTable = this.ReadMsiTableByName(msiFile, "Directory"); // get Directory table of msi specifiec bt msiFile.
foreach (DataRow row in directoryTable.Rows)
{
if (row["Directory"].ToString() == "INSTALLLOCATION" || row["Directory"].ToString() == "INSTALLDIR" || row["Directory"].ToString() == "INSTALLDIRECTORY")
{
installDirectoryPath = row["Directory_Parent"].ToString();
break;
}
}
string directory = installDirectoryPath;
while (directory != "TARGETDIR")
{
foreach (DataRow row in directoryTable.Rows)
{
if (row["Directory"].ToString() == directory)
{
installDirectoryPath = row["Directory_Parent"].ToString() + "//" + installDirectoryPath;
directory = row["Directory_Parent"].ToString();
break;
}
}
}
如果 INSTALLDIR 条目不在目录表中,请告知如何获取 MSI 的安装目录。我正在用 C# 编写代码并使用 WiX dll。