【问题标题】:How to uninstall my own wpf application如何卸载我自己的 wpf 应用程序
【发布时间】:2017-07-13 11:18:06
【问题描述】:

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

【问题讨论】:

  • 你能不能再具体一点?现在的问题非常模糊,这使得提供任何有用的信息/答案变得不必要地困难。如果没有更多信息,我只是建议复制新文件并替换任何现有/旧文件...
  • 我想使用 c# 代码按软件名称卸载程序,例如 (demo.exe)。机器人如何?或任何其他方式。
  • 您是否创建了自己的 vdproj 作为安装程序?如果是这样,那么有一种方法可以通过在安装命令中运行脚本或 exe 来实现您的意图
  • 我在 Installshield 的帮助下创建了设置。我想你知道 Iinstallshield 的过程。现在我想通过单独的 C# 程序卸载项目。
  • 我以前从未使用过InstallShield。但是,我看到的是有一个选项可以在 InstallShield 中对 Install 命令设置自定义操作。所以你可能想尝试执行一个普通的 C# exe 应用程序,它可以在安装新版本的应用程序时卸载你以前安装的应用程序版本。

标签: c# wpf windows-installer installshield


【解决方案1】:

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

  1. File System on Target machine -> 添加Special Folder,选择System Folder
  2. 在这个系统文件夹中添加一个文件。从本地 System32 文件夹中浏览 msiexec.exe 并添加它。
  3. 覆盖默认属性为:条件 = Not Installed,永久 = True,系统 = True,传递 = True 重要 = False
  4. Application Folder 下创建一个新的快捷方式,将目标设置为您在步骤1 中创建的System Folder。并将其指向msiexec.exe
  5. 将快捷方式重命名为“卸载您的应用程序”。
  6. 将 Arguments 属性设置为 /x [ProductCode]x[ 之间有一个空格)
  7. 构建项目

完成这些步骤后,您就可以为您的应用程序创建自己的卸载程序了。现在,当您第一次安装应用程序时,它会自动将卸载程序 exe 粘贴到安装文件夹中。下次安装时,安装程​​序应在安装较新版本之前找到并执行此卸载程序。为此,您可以创建一个 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

将此脚本作为uninstaller.vbs 存储在您的应用程序中,并将此文件附加到您的Application Folder。现在,在您的客户安装操作中,您需要在执行安装之前执行此脚本。

我希望这会有所帮助!

【讨论】:

  • 任何可用于这些步骤的视频/演示。实际上 1-6 步对我们来说非常困难。所以请帮助我。
  • @user4667380 据我所知没有!但是,我在我的项目中一直在做类似的事情,我可以向你展示我在普通安装程序项目中的内容
【解决方案2】:

如果您只想安装自己构建和安装的设置,并且(例如)生成 MSI 文件的 Visual Studio 设置项目,那么您只需要知道设置的 ProductCode。

然后(在 C# 中)您将 P/Invoke 到 MsiConfigureProduct 并传入 ProductCode、INSTALLLEVEL_DEFAULT、INSTALLSTATE_ABSENT)。

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

问题在于您正在尝试卸载程序仍在运行的产品,因此存在某种死锁。

如果您使用的是 WiX,那就是:

http://wixtoolset.org/documentation/manual/v3/howtos/files_and_registry/create_uninstall_shortcut.html

【讨论】:

    猜你喜欢
    • 2012-02-21
    • 2010-11-22
    • 1970-01-01
    • 2012-09-28
    • 2013-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多