0

我创建了一个安装程序来使用 Visual Studio 2008 部署我的 VBNet 程序。在这个安装程序中,我创建了一个指向要安装在用户桌面上的“主要输出”的快捷方式。

现在,一切正常。该程序安装在“C:\Program Files”下,并在桌面上创建快捷方式。此外,当我使用此快捷方式时,UAC 会提示我自动以管理员身份运行此程序。到目前为止,一切都很好...

但!我的桌面图标没有 UAC 屏蔽覆盖,即使程序是用清单编译的,说明它必须以管理员身份运行。另外,如果我在安装后手动在桌面上创建一个指向同一个可执行文件的新快捷方式,这个新的快捷方式将有屏蔽覆盖!

我试图重新启动并删除 iconCache.db 文件,但它没有工作。

所以我的问题是:如何在最初安装时让我的桌面快捷方式与 UAC 屏蔽覆盖一起出现。

谢谢!

4

3 回答 3

2

您可以通过使用构建后事件或由 Visual Studio 自动更改文件non-advertised中的一个表行来创建快捷方式。msiOrca

转到项目的属性,然后输入以下内容PostBuildEvent

cscript //nologo "$(ProjectDir)WiRunSql.vbs" "$(BuiltOuputPath)" "INSERT INTO Property(Property, Value) VALUES ('DISABLEADVTSHORTCUTS', '1')"

WiRunSql.vbs 文件可从微软获得

问候卢莫

于 2011-10-25T08:39:02.643 回答
0

我建议安装程序创建的图标不指向 .exe 文件,而是指向注册表项。打开快捷方式属性,如果快捷方式选项卡上的目标字段被禁用并且包含应用程序的名称,那么就是这种情况。

您可以使您的图标不做广告,然后创建的快捷方式将指向 .exe 文件。但是在这种情况下,如果 .exe 丢失,安装将无法自动修复。

于 2011-01-12T14:22:53.797 回答
0

没有更多细节,我唯一的猜测是您在目标存在之前创建了快捷方式,因此 Windows 无法看到清单。

于 2010-04-11T22:07:51.970 回答