Windows installer 如何以编程方式删除播发的快捷方式?

Windows installer 如何以编程方式删除播发的快捷方式?,windows-installer,advertised-shortcut,Windows Installer,Advertised Shortcut,所以我搞糟了一个msi安装程序,并在只测试安装而不是卸载后部署了它(我知道这很糟糕,在安装后添加了运行exe,但忘记了指定它应该只在安装而不是卸载时发生) 我找到了util和相关的msizap,我将使用它来自动化这个过程。现在的问题是,当一个新版本安装在上面之后,广告的快捷方式仍然试图进行修复(或者不管它实际上在尝试加载旧版本做什么),但失败了。直接从文件运行该程序可以很好地工作,但我需要以自动方式删除广告的快捷方式。它现在不需要非常健壮,相当小的私有beta安装基数,所以可以假设快捷方式位于桌

所以我搞糟了一个msi安装程序,并在只测试安装而不是卸载后部署了它(我知道这很糟糕,在安装后添加了运行exe,但忘记了指定它应该只在安装而不是卸载时发生)

我找到了util和相关的msizap,我将使用它来自动化这个过程。现在的问题是,当一个新版本安装在上面之后,广告的快捷方式仍然试图进行修复(或者不管它实际上在尝试加载旧版本做什么),但失败了。直接从文件运行该程序可以很好地工作,但我需要以自动方式删除广告的快捷方式。它现在不需要非常健壮,相当小的私有beta安装基数,所以可以假设快捷方式位于桌面和开始菜单的初始安装位置


对于广告的快捷方式,我是否需要考虑到任何特殊问题,或者我是否可以将其视为任何其他文件并将其删除?

AFAIK广告的快捷方式负责进行设置。
这些是特殊的lnk文件,它们指向安装程序,并带有一个spicel参数,该参数将在激活时执行设置(您可以使用记事本或十六进制编辑器查看信息)。
无论如何,MSI zap都应该删除所有设置跟踪。

如果执行zap,然后按快捷键,安装程序是否运行?或者您出现错误?

AFAIK建议的快捷方式负责执行设置。
这些是特殊的lnk文件,它们指向安装程序,并带有一个spicel参数,该参数将在激活时执行设置(您可以使用记事本或十六进制编辑器查看信息)。
无论如何,MSI zap都应该删除所有设置跟踪。

如果执行zap,然后按快捷键,安装程序是否运行?或者出现错误?

就快捷方式而言,它只是一个可以删除的普通文件

不过,我要提醒您不要使用MSIZAP-这实际上是最后的手段,会留下大量信息、共享DLL计数、注册表项、文件等。删除Windows Installer信息后,您需要从注册表中删除与程序相关的任何信息。SharedDLL ref计数是最糟糕的事情,因为当您尝试重新安装/卸载新的MSI时,它们会出错


罗布有一篇很好的帖子,详细介绍了其中的一些内容。除非您准备手动查找它留下的所有注册表信息,否则您不想使用它

就快捷方式而言,它只是一个可以删除的普通文件

不过,我要提醒您不要使用MSIZAP-这实际上是最后的手段,会留下大量信息、共享DLL计数、注册表项、文件等。删除Windows Installer信息后,您需要从注册表中删除与程序相关的任何信息。SharedDLL ref计数是最糟糕的事情,因为当您尝试重新安装/卸载新的MSI时,它们会出错


罗布有一篇很好的帖子,详细介绍了其中的一些内容。除非您准备手动查找它留下的所有注册表信息,否则您不想使用它

它显示了一个错误,上面写着“参数不正确”,但当我安装新版本后,它会尝试运行安装程序,并显示一些错误(回忆不起它是什么atm),这是有道理的,捷径在切换后不起作用,但在安装新版本后会出现什么错误?嗯,图,现在它是不可复制的。另一个Heisenbug我想我很确定,清除和删除快捷方式已经足够好了(当然是在给定的情况下)。它显示一个错误,上面写着“参数不正确”,但当我安装新版本后,它会尝试运行安装程序,并显示一些错误(回忆不起它是什么)这是有道理的捷径不工作后,消除,但你得到的错误后,安装新版本?嗯,数字,现在它是不可复制的。另一个海森堡,我想我很确定,清除和删除快捷方式已经足够好了(当然,在给定的情况下)。