.net 如何更改Visual Studio生成的MSI中.InstallState文件的位置
我有一个使用VisualStudio安装项目创建的MSI文件。已安装的将在应用程序目录中生成.InstallState文件。是否有办法在其他位置而不是默认位置生成此文件?您需要设置InstallStateDir的值。.net 如何更改Visual Studio生成的MSI中.InstallState文件的位置,.net,visual-studio,installation,.net,Visual Studio,Installation,我有一个使用VisualStudio安装项目创建的MSI文件。已安装的将在应用程序目录中生成.InstallState文件。是否有办法在其他位置而不是默认位置生成此文件?您需要设置InstallStateDir的值。 您需要覆盖提交/安装/回滚/卸载并设置InstallStateDir的值(即上下文[“InstallStateDir”]=@“c:\mydir”) . 通过在命令行中指定/InstallStateDir=“c:\myfolder”(请参见KB946503),也可以实现这一点。但
您需要覆盖提交/安装/回滚/卸载并设置InstallStateDir的值(即上下文[“InstallStateDir”]=@“c:\mydir”)
. 通过在命令行中指定/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”]
可能有助于保存状态;但是,由于状态是在Uninstall
可以修改上下文之前加载的,因此在Microsoft修复上述AssemblyInstaller.GetInstallStatePath
方法之前,这不是可行的解决方案