相关疑难解决方法(0)

从MSI文件中查找GUID

如何在Windows中列出已安装程序的GUID?或者,如果我有MSI文件,是否更容易找到GUID?

我正在通过Orca查看MSI文件,但不确定在哪里查找GUID.

谢谢!

windows windows-installer guid

11
推荐指数
3
解决办法
5万
查看次数

无提示MSI卸载不存在的GUID

我试图实现我的应用程序的安静卸载.如果实际安装了应用程序,则此方法很有用,但是当用户收到错误消息时,必须单击"确定"继续.

我的命令:

__PRE__

问题是我需要在AD中部署的脚本中清理应用程序的所有旧版本.我不知道在什么计算机上安装了什么版本,并且首先让脚本确定是困难的.

如何让MSIEXEC 不要抱怨卸载不存在的GUID?

windows-installer uninstall batch-file

7
推荐指数
1
解决办法
1万
查看次数

卸载软件

我的产品有一个帮助程序可执行文件来卸载所有相关的子产品.我根据所有子产品的升级代码卸载.

首先,我使用MsiEnumRelatedProducts函数从升级代码中获取产品代码.然后我尝试使用MsiConfigureProductEx函数卸载产品.

问题MsiConfigureProductEx是返回错误.

调用函数:MsiConfigureProductsEx
返回代码:1605(0x00000645)
描述:此操作仅对当前安装的产品有效.

为什么MsiEnumRelatedProducts返回无效的产品代码?我搜索了Windows注册表,看看是否存在这样的产品代码.没有.如何调试问题?

编辑:添加了重现问题的最小代码.

// UpgradeCodes is an array having upgrade codes of all modules.

TCHAR lpProductCode[GUID_STR_LENGTH];
const TCHAR tszNoReboot[] = _T("REMOVE=ALL REBOOT=ReallySuppress DISABLE_REBOOT_PROMPT=1");

for (size_t i = 0; i < sizeof(UpgradeCodes) / sizeof(UpgradeCodes[0]); i++)
{
   tstring tstrUpgradeCode = UpgradeCodes[i];

   DWORD dwIndex = 0;
   size_t status;

   // for each of the upgrade code, get all the products
   do
   {
       status = MsiEnumRelatedProducts(UpgradeCodes[i], 
                                       0, 
                                       dwIndex, 
                                       lpProductCode);
       if (ERROR_SUCCESS == …
Run Code Online (Sandbox Code Playgroud)

windows installer winapi windows-installer

7
推荐指数
2
解决办法
1736
查看次数

从控制面板卸载与从.msi中删除不同

从控制面板和.msi本身卸载带有基于WiX的.msi的应用程序有什么区别吗?

如果有什么呢?

我问的原因如下:

不同之处如下:我的.msi将一些文件存储在%PROGRAMDATA%中.如果我从控制面板卸载那里的文件被卸载(似乎.msi跟踪那些(它们被定义为组件)),但当我打开我的.msi并尝试卸载(我有一个维护对话框)那些文件不会被删除.

另一个区别是:我还有一个自定义操作来停止我的应用程序,如果它正在运行,在InstallUeesecece中调用After ="AppSearch",在InstallExecuteSequence中调用Before ="CostFinalize",但是当从.msi中删除时它不是被召唤.只有一个对话框显示有文件要删除但正在使用但是有些进程,当我告诉它停止它们时它不会这样做.

windows-installer wix

7
推荐指数
1
解决办法
3679
查看次数

安装后复制MSI文件的位置?

我必须更换它,因为一个阻止软件卸载的错误,但是如果我使用文件搜索实用程序,Windows无法找到MSI文件,但我认为MSI存储在Add or Remove Programs实用程序可以使用它的某个地方.

.net windows windows-installer windows-xp

6
推荐指数
5
解决办法
2万
查看次数

使用默认值安静地安装 MSI

我正在编写一个 powershell 脚本来卸载和安装产品。卸载和安装过程只需单击几个填充默认值的下一步按钮即可。

您能否建议如何安装 MSI 文件而不提示用户单击几个下一步按钮并非常安静地完成安装过程。

如果我想在安装过程中提供自定义值,找出属性名称以及如何静默运行它的过程可能是什么。请参阅任何参考资料以进一步探索。

我正在使用 powershell 2.0,如果需要更多信息,请告诉我。提前致谢。

问候, 库马尔

installation windows-installer powershell-2.0

6
推荐指数
1
解决办法
1万
查看次数

Powershell卸载脚本 - 真的很头疼

我目前正在编写一个脚本,其中包含许多安装在WES 7设备上的程序卸载.我需要卸载的其中一个应用程序(VMware Horizo​​n View Client)要求重新启动.如果这是脚本的一部分,它似乎接受默认按钮(是)并继续重启设备.因此脚本失败了.

我非常感谢您帮助我们如何防止重启.

仅供参考:此脚本通过管理工具发送,并在目标上以提升的方式运行.

这是我的脚本:

set-executionpolicy unrestricted
#############################################################
# Un-install unwanted applications
#############################################################
$application = Get-WMIObject Win32_Product -filter "Name='ThinPrint Client Windows 8.6'"
$application.Uninstall()
$application = Get-WMIObject Win32_Product -filter "Name='2X Client'"
$application.Uninstall()
$application = Get-WMIObject Win32_Product -filter "Name='Adobe Reader X (10.1.4)'"
$application.Uninstall()
$application = Get-WMIObject Win32_Product -filter "Name='VMware Horizon View Client'"
$application.Uninstall()
$application = Get-WMIObject Win32_Product -filter "Name='VERDE VDI User Tools'"
$application.Uninstall()
$application = Get-WMIObject Win32_Product -filter "Name='vWorkspace Connector for Windows'"
$application.Uninstall()

#############################################################
# Remove Internet Explorer Access …
Run Code Online (Sandbox Code Playgroud)

powershell

5
推荐指数
1
解决办法
5525
查看次数

始终在升级期间执行删除/重新安装

我在理解InstallShield如何处理升级方面遇到了一些麻烦.

我想要的是能够增加安装程序的版本号,重新编译和分发我的安装程序.这应该会自动删除任何以前版本的应用程序,并安装最新版本(它应作为"升级"呈现给用户).

这是一个非常简单的安装程序,它只是从几个Visual Studio项目(应用程序EXE,一些DLL等)输出并将它们全部安装到Program Files中.只有一个功能,它始终安装.

我不想更改产品的升级代码,因为我必须创建新的升级路径(每个以前版本一个),这很麻烦.

我之前尝试过这种方法(增加版本号,但不更改产品代码或升级代码),但每次我运行安装程序以"升级"产品时,都会显示"正在恢复向导" [ProductName]",有时某些文件不会被较新安装程序中较新的对应文件替换.

我没有增加版本号的"修订版"号.我知道这被忽略了.通常,我会尝试类似的东西2.0.3 => 2.0.4.

如何设置InstallShield以便自动删除任何以前的版本,安装最新版本,如果已经安装了以前的版本,则将其作为"升级"或"更新"呈现给用户?如果没有,它应该像平常一样安装("安装",而不是"更新").

我正在使用InstallShield 2013 Pro(版本20 SP1),我坚持在Visual Studio 2010中使用InstallShield编辑器.

installshield installshield-2013

5
推荐指数
1
解决办法
6606
查看次数

如何在c#中使用其产品代码卸载MSI

我知道我们可以通过传递命令参数来使用其MSI卸载Windows应用程序,如下所示,

Process p = new Process(); 
p.StartInfo.FileName = "msiexec.exe"; 
p.StartInfo.Arguments = "/x \"C:\\MyApplication.msi\"/qn"; 
p.Start(); 
Run Code Online (Sandbox Code Playgroud)

但我想知道的是如何在不使用MSI的情况下卸载应用程序?在上面的场景中,我应该在特定位置安装MSI来卸载这个应用程序,如果我可以使用产品代码解压缩,那么我就不需要在目标机器上安装MSI.

c# windows-installer uninstall

4
推荐指数
2
解决办法
1万
查看次数

如何避免使用我的 WiX / MSI 包触发 MSI 自我修复?

如何避免从我的 WiX 生成的 MSI 包触发自我修复?


这是一个Q/A 风格的问题,其答案只是列出了一些不要在您的 MSI 文件中做的事情,以避免重复自我修复的最常见原因。

windows-installer installshield wix advanced-installer

4
推荐指数
1
解决办法
2263
查看次数