Не удалось обнаружить ошибку installstate при выполнении события Roolback InstallerClass в проекте установки.C#

Место общения программистов C#
Ответить
Anonymous
 Не удалось обнаружить ошибку installstate при выполнении события Roolback InstallerClass в проекте установки.

Сообщение Anonymous »

Я создал проект установки Visual Studio и добавил в него два консольных приложения в качестве выходных данных проекта. Каждое консольное приложение имеет свой класс установщика. В специальном действии проекта установки я добавил выше два приложения.

В классе InstallerClass consoleApp2 у меня есть несколько проверок. Если проверки пройдены успешно, он проверит InstallerClass ConsoleApp1, иначе установку установки следует откатить.

Во время операции отката я получаю сообщение «Ошибка 1001. Не удалось найти путь к файлу приложения\Consoleapp1.InstallState», как показано ниже, поскольку его состояние установки еще не инициировано.

Во время операции отката я получаю сообщение «Ошибка 1001. Не удалось найти путь к файлу приложения\Consoleapp1.InstallState», как показано ниже, поскольку состояние установки еще не инициировано.

p>

Изображение


Можно ли как-нибудь решить эту проблему. Мой главный девиз — откатить установку без отображения ошибок пользователю, если проверки в классе установщика не пройдут. Ниже приведен код, который я использую.

public override void Install(IDictionary stateSaver)
{
base.Install(stateSaver);
MessageBox.Show("Install");
try
{
const string subkey = @"SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\";

using (RegistryKey ndpKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).OpenSubKey(subkey))
{
if (ndpKey != null && ndpKey.GetValue("Release") != null && Convert.ToInt32(ndpKey.GetValue("Release")) > 461310)
{
MessageBox.Show("Framework version is " + ndpKey.GetValue("Release").ToString());

string message = "This setup requires .Net framework Version 4.7.1. Please install the .Net Framework and run setup again. The .Net framework can be obtained from the web. Would you like to do this now ?";
MessageBoxButtons buttons = MessageBoxButtons.YesNo;
DialogResult result = MessageBox.Show(message, "", buttons);
if (result == DialogResult.Yes)
{
Process.Start("http://go.microsoft.com");

throw new InstallException(String.Format("Installation rollbacked."));
}
else
{
throw new InstallException(String.Format("Cancelling Installation"));

}

}
else
{

}

}
}
catch (Exception ex)
{

throw new Exception(String.Format("Cancelling Installation 123"));

}

}
public override void Rollback(IDictionary savedState)
{
base.Rollback(savedState);
MessageBox.Show("rollback c2 " + savedState.Values);
}
public override void Uninstall(IDictionary savedState)
{
base.Uninstall(savedState);
}
public override void Commit(IDictionary savedState)
{
base.Commit(savedState);
}


Подробнее здесь: https://stackoverflow.com/questions/535 ... lback-even
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»