Это также должно работать, указав / 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
.