如何查找 Windows 窗体应用程序的产品代码?

Posted

技术标签:

【中文标题】如何查找 Windows 窗体应用程序的产品代码?【英文标题】:How to find a Windows Forms Application's Product Code? 【发布时间】:2011-07-09 13:57:28 【问题描述】:

我需要我的应用程序自行卸载。

原因:我注意到我的应用程序正在破坏它自己的文件(我的错),但我的应用程序的用户不明白为什么他需要卸载它并拒绝卸载它。但是,他仍然抱怨不断出现的问题。在使用条款中,有一行字写着“......我们保留从您的计算机中删除该应用程序并暂时或永久停止您使用该软件的权利。”

所以,我搜索了如何卸载程序(将被新版本取代),并遇到Uninstall C# windows application from self 并且接受的答案说您需要一个“产品代码”。那到底是什么,我在哪里可以找到/从哪里得到它?我已经搜索过,但找不到任何东西。

谢谢

【问题讨论】:

您使用哪种技术创建应用程序安装程序? 您的意思是您保留在未经用户同意的情况下卸载应用程序的权利,但您不知道如何行使该权利?多么讽刺…… @Doc Brown - 我使用了 Visual Studio 2010 Express 的内置发布功能,它使用 Windows Installer 3.1。 我什至不确定这些使用条款是否合法,除非用户已将软件租用了特定时期或时间。否则,这就像产品制造商说他们保留随时回收您的产品的权利。似乎您应该允许客户决定他们是要允许您修复错误还是只是按原样使用应用程序。 见***.com/questions/673233/… 【参考方案1】:

可以通过使用 orca、msi db 编辑器打开并在属性表中查找产品代码从您的 MSI 获得产品代码。 Orca 是 Windows SDK 的一部分。

你也可以运行你的 msi

msi /i [your msi] -lvx* log.log

并从日志中获取产品代码。

正如 Ken White 已经指出的那样,最简单的方法是从设置的作者文件中获取它。

【讨论】:

【参考方案2】:

您在创建 MSI 以安装应用程序时创建了产品代码(如果存在)。您需要安装时使用的相同产品代码才能通过 Windows Installer 卸载它。

【讨论】:

产品代码自动创建;而且据我所见,仅通过在项目属性等中查找是无法找到它的。 产品代码和GUID一样吗?如果是这样,那我明白了。【参考方案3】:

我不确定 VS 2010,但在 VS2008 设置项目中有一个“.vdproj”项目文件,可以使用简单的文本编辑器(如记事本)打开。如果你搜索“ProductCode”这个词,你会发现这样一行

 "ProductCode" = "8:GUID"

(GUID 就是您要查找的内容)。

【讨论】:

谢谢 - 我可以从 VS 项目属性中找到 GUID :)

以上是关于如何查找 Windows 窗体应用程序的产品代码?的主要内容,如果未能解决你的问题,请参考以下文章

从 Windows 窗体中查找输入类型控件

按名称在 Windows 窗体中查找控件

Windows 窗体 - 如何中断当前正在执行的代码的执行

如何检测是不是启用了防火墙产品?

c# 用 FindWindowEx 获取子窗体时 出异常

C# 窗体常用API函数 应用程序窗体查找