Как удалить настольный ярлык мимо Innosetup

Пример кода (комбинация Andrew с дополнительным моим в what-is-the-purpose-of-interfaces), который также излагает доводы о почему интерфейс вместо абстрактного класса на языках без поддержки множественного наследования (c# и Java):

interface ILogger
{
    void Log();
}
class FileLogger : ILogger
{
    public void Log() { }
}
class DataBaseLogger : ILogger
{
    public void Log() { }
}
public class MySpecialLogger : SpecialLoggerBase, ILogger
{
    public void Log() { }
}

Уведомление, что FileLogger и DataBaseLogger не нужен интерфейс (мог быть абстрактный базовый класс Регистратора). Но полагайте, что Вы обязаны использовать сторонний регистратор, который вынуждает Вас использовать базовый класс (позволяет, говорят, что он представляет защищенные методы Вы Потребность использовать). Поскольку язык не поддерживает множественное наследование, Вы не будете в состоянии использовать подход абстрактного базового класса.

Нижняя строка: используйте интерфейс, если это возможно, для получения дополнительной гибкости на коде. Ваша реализация менее связывается, таким образом, она размещает лучше для изменения.

21
задан mghie 23 April 2010 в 10:51
поделиться

1 ответ

Любой вариант будет работать, но есть несколько моментов.

1) Вы потребуется либо {userdesktop}, либо {commondesktop}, в зависимости от того, был ли ярлык установлен для конкретного пользователя или для всех пользователей.

2) Вам необходимо обязательно добавить расширение .lnk к ярлыку имя.

Так что это, вероятно, сработает:

DeleteFile(ExpandConstant('{userdesktop}\Shortcut Name.lnk'));
DeleteFile(ExpandConstant('{commondesktop}\Shortcut Name.lnk'));

или

[InstallDelete]
Type: files; Name: "{userdesktop}\Shortcut Name.lnk"
Type: files; Name: "{commondesktop}\Shortcut Name.lnk"
29
ответ дан 29 November 2019 в 21:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: