如何在Visual Studio生成的MSI中更改.InstallState文件的位置

时间:2008-11-06 15:15:15

标签: .net visual-studio installation

我有一个使用Visual Studio安装项目创建的MSI文件。安装程序在应用程序目录中生成.InstallState文件。有没有办法让这个文件生成在不同的位置而不是默认位置?

2 个答案:

答案 0 :(得分:2)

您需要设置InstallStateDir的值 您需要覆盖Commit / Install / Rollback / Uninstall并设置InstallStateDir的值(I.E. Context [“InstallStateDir”] = @“c:\ mydir”) 。

答案 1 :(得分:1)

这也可以通过从命令行指定/ InstallStateDir =“c:\ myfolder”来实现(参见KB946503)。但是,InstallContext将所有参数名称转换为小写,从而打破AssemblyInstaller中的以下代码,期望找到混合大小写参数名称:

private string GetInstallStatePath(string assemblyPath)
{
    string str2 = base.Context.Parameters["InstallStateDir"];
    assemblyPath = Path.ChangeExtension(assemblyPath, ".InstallState");
    if (!string.IsNullOrEmpty(str2))
    {
        return Path.Combine(str2, Path.GetFileName(assemblyPath));
    }
    return assemblyPath;
}

设置Context [“InstallStateDir”]可能有助于保存状态;但是,由于在卸载之前加载状态可以修改上下文,因此在Microsoft修复上述AssemblyInstaller.GetInstallStatePath方法之前,这是不可行的解决方案。