我创建了一个程序(C#dotnet),它通过使用ISWiAuto18.ISWiProject来更新我的MSI(Installshield 2009)项目的不同属性(如路径变量)
for (int count = 1; count <= m_ISWiProj.ISWiPathVariables.Count; count++)
{
if (m_ISWiProj.ISWiPathVariables[count].Name == pathVar)
{
m_ISWiProj.ISWiPathVariables[count].Value = pathvarvalue;
m_ISWiProj.IswiAutoUpgradeEntries
}
}
但是现在我无法找到使用ISWiAuto18.ISWiProject更新Installshield项目的注册表项值的方法吗? 有没有办法更新注册表值?
答案 0 :(得分:0)
ISWiProject对象有一个ISWiComponents集合,允许您获取对ISWiComponent对象的引用。完成后,您可以使用ImportRegFile方法将其他注册表数据加载到组件中。这是关于自动化界面能力的程度。
如果我明白你做得更好,我可以给出更多建议。您可能需要考虑在ISM的注册表中使用[PROPERTY],然后将属性值传递到构建中。这将是获取您可能需要的变化点的简单方法。
另一种方法是使用ISWiProject对象的UseXMLProjectFormat方法将ISM从XML转换为/从Binary转换,然后使用XML DOM来操作ISM(DTD粗略但可行)或Windows Installer SQL查询(如果是二进制格式)。 (WiX的DTF库Microsoft.Deployment.WindowsInstaller对此很好)