Отсутствует наложение щита UAC на ярлык на рабочем столе при создании MSI из VS 2008 - PullRequest
0 голосов
/ 11 апреля 2010

Я создал программу установки для развертывания моей программы VBNet с использованием Visual Studio 2008. Внутри этой программы установки я создал ярлык для «основного вывода», который будет установлен на рабочем столе пользователя.

Теперь все работает правильно. Программа устанавливается в «C: \ Program Files», а ярлык создается на рабочем столе. Кроме того, когда я использую этот ярлык, UAC выдает запрос на авторизацию запуска этой программы от имени администратора. Пока все хорошо ...

Но! Значок на рабочем столе не имеет наложения щита UAC, даже если программа скомпилирована с манифестом, в котором указано, что она должна запускаться от имени администратора. Кроме того, если я вручную создаю новый ярлык на рабочем столе для того же исполняемого файла после установки, этот новый ярлык будет иметь наложение экрана!

Я попытался перезагрузить компьютер и удалить файл iconCache.db, но он не сработал.

Итак, мой вопрос: как я могу отобразить ярлык на рабочем столе при наложении экрана UAC при первоначальной установке.

Спасибо!

Ответы [ 3 ]

2 голосов
/ 25 октября 2011

Вы можете сделать свои ярлыки non-advertised, изменив одну строку таблицы в файле msi, либо используя Orca, либо автоматически Visual Studio, используя событие после сборки.

Перейдите в Свойства проекта и введите следующее PostBuildEvent:

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

Файл WiRunSql.vbs доступен от microsoft

С уважением Lumo

0 голосов
/ 12 января 2011

Я бы предположил, что созданный установщиком значок указывает не на файл .exe, а на раздел реестра. Откройте свойства ярлыка, если поле Target на вкладке Ярлык отключено и содержит имя приложения, то это тот случай.

Вы можете сделать свой значок нерекламированным, тогда созданный ярлык будет указывать на файл .exe. Однако в этом случае установка не может быть автоматически восстановлена, если отсутствует .exe.

0 голосов
/ 12 апреля 2010

Без каких-либо подробностей я могу предположить, что вы создаете ярлык до того, как цель существует, чтобы окна не могли видеть манифест.

...