我有一个使用Visual Studio安装项目创建的MSI文件。安装程序在应用程序目录中生成.InstallState文件。有没有办法让这个文件生成在不同的位置而不是默认位置?
答案 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方法之前,这是不可行的解决方案。