Я разрабатываю приложение WPF на С#. В настоящее время мой msi устанавливает текущее приложение в machine.I нужно удалить два поддерживающих приложения существующей версии во время установки нового (msi).
Я написал код, чтобы программно удалить приложение, и это не работает, когда я вызываю метод удаления приложения в installer.cs
. Тот же метод успешно удаляет два приложения, когда я вызываю из другой части проекта, кроме installer.cs
.
метод удаления:
public static string GetUninstallCommandFor(string productDisplayName)
{
RegistryKey localMachine = Registry.LocalMachine;
string productsRoot = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products";
RegistryKey products = localMachine.OpenSubKey(productsRoot);
string[] productFolders = products.GetSubKeyNames();
foreach (string p in productFolders)
{
RegistryKey installProperties = products.OpenSubKey(p + @"\InstallProperties");
if (installProperties != null)
{
string displayName = (string)installProperties.GetValue("DisplayName");
if ((displayName != null) && (displayName.Contains(productDisplayName)))
{
string fileName = "MsiExec.exe";
string arguments = "/x{4F6C6BAE-EDDC-458B-A50F-8902DF730CED}";
ProcessStartInfo psi = new ProcessStartInfo(fileName, arguments)
{
CreateNoWindow = true,
UseShellExecute = false,
RedirectStandardOutput = true
};
Process process = Process.Start(psi);
process.WaitForExit();
return uninstallCommand;
}
}
}
return "";
}
Обновление: после использования установщика WIX MSI
Я создал проект CustomAction в WIX, также создал проект установки с использованием WIX. Пожалуйста, смотрите мой Product.wxs
<InstallExecuteSequence>
<Custom Action='ShowCustomActionCustomAction' After='InstallFinalize'>NOT Installed</Custom>
</InstallExecuteSequence>
У меня есть код для удаления приложения 3 в CustomAction.cs.When я запускаю мой WIX MSI, он устанавливает новое приложение и удаляет первое приложение. Остальные два приложения не удаляются, я заметил, что после успешного удаления первого приложение закрывается и ничего не происходит.
Можете ли вы рассказать мне, как удалить приложение 3 во время установки моего WIX MSI.
Обновление 2:
<Property Id="PREVIOUSVERSIONSINSTALLED" Secure="yes" />
<Upgrade Id="89CF8BE7-05EE-4C7E-9EFC-0249DD260EBB">
<UpgradeVersion
Minimum="1.0.0.0" Maximum="99.0.0.0"
Property="PREVIOUSVERSIONSINSTALLED"
IncludeMinimum="yes" IncludeMaximum="no" />
</Upgrade>
<InstallExecuteSequence>
<RemoveExistingProducts Before="InstallFinalize" />
</InstallExecuteSequence>
</Product>
вышеуказанные настройки в product.wxs удаляют предыдущую версию и устанавливают новую. В дополнение к этому мне нужно также удалить еще два приложения зависимостей. Как удалить приложение зависимостей с помощью установщика wix.
Может ли кто-нибудь помочь мне проверить установленное приложение на машине и удалить его перед установкой моего нового wix msi.