2010-04-11 84 views
0

我创建了一个安装程序,以使用Visual Studio 2008部署我的VBNet程序。在此安装程序中,我创建了一个“主要输出”安装在用户桌面上。从VS 2008创建msi创建时,在桌面快捷方式图标上缺少UAC遮罩图层

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

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

我试图重新启动并删除iconCache.db文件,但它不起作用。

所以我的问题是:我怎样才能让我的桌面快捷方式出现与最初安装UAC盾叠加。

谢谢!

+0

也许你可以告诉你使用的代码创建快捷方式? – Anders 2010-04-11 22:05:56

+0

没有代码。我正在使用Visual Studio 2008附带的msi构建器来创建快捷方式。 – 2010-04-12 02:27:59

回答

0

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

+0

那么,我正在使用Visual Studio 2008附带的msi构建器。我认为它实际上在创建快捷方式之前创建了程序文件夹(因此是可执行文件),但我无法确定。 – 2010-04-12 02:27:09

0

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

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

+0

感谢您的反馈。这实际上是有道理的,但是如何让我的图标不被VS 2010广告? – 2011-01-18 03:08:59

2

您可以通过使用Orca更改msi文件中的一个表格行或使用后期构建事件自动由visual studio更改您的快捷方式non-advertised

转到项目的属性,并输入以下PostBuildEvent

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

的WiRunSql.vbs文件可从microsoft

问候 鲁磨

相关问题