Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何卸载我自己的wpf应用程序_C#_Wpf_Windows Installer_Installshield - Fatal编程技术网

C# 如何卸载我自己的wpf应用程序

C# 如何卸载我自己的wpf应用程序,c#,wpf,windows-installer,installshield,C#,Wpf,Windows Installer,Installshield,我创建了WPF应用程序,创建了安装程序并手动安装在系统上。现在我想用c程序卸载这个应用程序。通过这种方式,我们希望安装此应用程序的新版本。但是如何安装? 谢谢。这就是我建议你实现目标的方法!注意:我解释的方式是您可以在普通的VisualStudio安装程序项目中执行的操作。对于InstallShield,步骤可能看起来不同,但遵循相同的策略 目标计算机上的文件系统->添加特殊文件夹,选择系统文件夹 在此系统文件夹中添加一个文件。从本地System32文件夹浏览msiexec.exe并添加它。 将

我创建了WPF应用程序,创建了安装程序并手动安装在系统上。现在我想用c程序卸载这个应用程序。通过这种方式,我们希望安装此应用程序的新版本。但是如何安装?
谢谢。

这就是我建议你实现目标的方法!注意:我解释的方式是您可以在普通的VisualStudio安装程序项目中执行的操作。对于InstallShield,步骤可能看起来不同,但遵循相同的策略

目标计算机上的文件系统->添加特殊文件夹,选择系统文件夹 在此系统文件夹中添加一个文件。从本地System32文件夹浏览msiexec.exe并添加它。 将默认属性重写为:条件=未安装、永久=真、系统=真、传递=真生命=假 在应用程序文件夹下创建新的快捷方式,将目标设置为在步骤1中创建的系统文件夹。指向msiexec.exe。 将快捷方式重命名为“卸载应用程序”。 将Arguments属性设置为/x[ProductCode]在x和之间有一个空格[ 建设项目 完成这些步骤后,您将为应用程序创建自己的卸载程序。现在,当您首次安装应用程序时,它将自动将卸载程序exe粘贴到安装文件夹中。下次安装时,安装程序应在安装新版本之前找到并执行此卸载程序。Fo为此,您可以创建一个vb脚本批处理文件来调用和执行卸载程序exe

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
将此脚本作为卸载程序.vbs存储在应用程序中,并将此文件附加到应用程序文件夹中。现在,在客户安装操作中,您需要在执行安装之前执行此脚本


我希望这会有所帮助!

如果您只想安装您构建和安装的安装程序,并且它是一个生成MSI文件的Visual Studio安装项目,那么您只需要知道安装程序的产品代码

然后在C中,您需要p/Invoke到MSConfigureProduct并传入ProductCode,INSTALLLEVEL\u DEFAULT,INSTALLSTATE\u缺席

否则,您可以将命令msiexec/x{productcode}与您选择的任何其他命令行选项一起使用

问题是您试图卸载一个程序仍在运行的产品,因此出现了一种死锁

如果您使用的是WiX,则会出现以下情况:


你能试着说得更具体一点吗?目前的问题非常模糊,这使得提供任何类型的有用信息/答案都不必要地困难。如果没有更多信息,我只建议复制新文件并替换任何现有/旧文件…我想用软件名如demo.exe us卸载程序安装c代码。Bot How?或任何其他方式。您是否创建了自己的vdproj作为安装程序?如果是这样,那么有一种方法可以通过在安装命令中运行脚本或exe来实现您的目标。我在Installshield的帮助下创建了安装程序。我想您知道IIInstallShield的过程。现在我想用单独的c程序卸载该项目。我以前从未使用过InstallShield。但是,我看到的是,InstallShield中还有一个选项,可以在Install命令上设置自定义操作。因此,您可能希望尝试执行一个普通的C exe应用程序,该应用程序可以在安装新版本的应用程序时卸载以前安装的应用程序版本。有关r这些步骤。实际上,1-6个步骤对我们来说非常困难。所以请帮助我。@user4667380就我所知,没有这样的步骤!但是,我在我的项目中一直在做类似的事情,我可以向您展示我在正常安装项目中的步骤