У меня очень неприятная проблема.
У меня есть приложение с проектом установки, включенным в решение, которое создает MSI-файл. Я использую VS 2008.
Я увеличил версию проекта установки - выбрал проект в обозревателе решений, нажал клавишу F4 и увеличил версию и изменил поля «Производитель» и «Автор». Затем я затем перестроил приложение и проект установки.
Затем происходит самое странное: когда я запускаю полученный MSI-файл без вывода сообщений, он устанавливает последнюю версию в правильном пути C: \ Program Files (x86) [Manufacturer] \ path.
Но когда я вызываю установочный файл из кода приложения, с немыми аргументами:
processStartInfo.Arguments = "/i " + "\"" + file + "\"" + "/qn";
... затем он устанавливает предыдущую версию (ту, которая была увеличена до версии проекта установки), а также устанавливает ее по старому пути производителя.
В установочном файле .msi хранятся две версии, которые содержат разные переменные / установочные свойства ?! Я озадачен и очень раздражен, я потерял четыре часа на этом вопросе.
Я удалил временные файлы. Я проверил правильный .msi находится на правильном пути в десятки раз.
Мне нужно заставить .msi учитывать обновленные параметры настройки при установке с параметром без вывода сообщений.
Вот код из приложения, которое вызывает настройку:
private static void RunSetupFile()
{
string file = Path.Combine(Utils.GetAppTempPath(), Utils.ApplicationUpdate_SetupFileName);
ProcessStartInfo psi = new ProcessStartInfo(Path.Combine(Environment.SystemDirectory, "msiexec.exe"));
psi.WindowStyle = ProcessWindowStyle.Hidden;
psi.Arguments = "/i " + "\"" + file + "\"" + "/qn";
psi.UseShellExecute = true;
psi.Verb = "runas";
try
{
Process process = Process.Start(psi);
}
catch (System.ComponentModel.Win32Exception)
{
}
}
А ниже приведен код, который вызывает вышеуказанный метод, возможно, здесь виновник:
public static void InitializeAppUpdate()
{
DownloadNewSetupVersionFromServer();
RunSetupFile();
Utils.CloseApplication();
}
Спасибо за любую идею. Дайте мне знать, если я предоставлю более подробную информацию.