我创建了WPF应用程序并创建了设置并安装在系统上(手动)。现在我想通过c#程序卸载这个应用程序。通过这种方式我们想要安装这个应用程序的新版本。但是如何? 感谢。
答案 0 :(得分:0)
这就是我建议你去实现目标的方式!注意:我解释的方法是在普通的visual studio安装程序项目中可以执行的操作。对于安装屏蔽,步骤可能看起来不同,但它遵循相同的策略。
File System on Target machine
- >添加Special Folder
,选择System Folder
msiexec.exe
文件夹浏览System32
并添加。Not Installed
,永久= True
,系统= True
,传递= True
重要= False
Application Folder
下创建一个新的快捷方式,将目标设置为您在步骤1中创建的System Folder
,并将其指向msiexec.exe
。/x [ProductCode]
(x
和[
之间有空格)完成这些步骤后,您将为应用程序创建自己的卸载程序。现在,当您第一次安装应用程序时,它会自动将卸载程序exe粘贴到安装文件夹中。下次安装时,安装程序应在安装较新版本之前找到并执行此卸载程序。为此,您可以创建一个vb脚本批处理文件来调用和执行卸载程序。
Dim WSHShell
Dim oFSO
Dim EXEPath
Set WSHShell = CreateObject("WScript.Shell")
Set oFSO = CreateObject("Scripting.FileSystemObject")
If Not WSHShell Is Nothing Then
EXEPath = "C:\Program Files (x86)\Your Application Location\Uninstall Your Application.exe"
If oFSO.FileExists(EXEPath) Then
WSHShell.Run(EXEPath)
End If
End If
将此脚本作为uninstaller.vbs存储在您的应用程序中,并将此文件附加到Application Folder
。现在,在您的客户操作安装中,您需要在执行安装之前执行此脚本。
我希望这有帮助!
答案 1 :(得分:0)
如果您只想安装自己构建和安装的设置,并且它(例如)生成MSI文件的Visual Studio安装项目,那么您只需要知道设置的ProductCode。
然后(在C#中)你P / Invoke到MsiConfigureProduct并传入ProductCode,INSTALLLEVEL_DEFAULT,INSTALLSTATE_ABSENT)。
否则可以将命令msiexec / x {productcode}与您选择的其他命令行选项一起使用。
问题是您正在尝试卸载程序仍在运行的产品,因此存在一种死锁。
如果您使用的是WiX,请执行以下操作: