Для журналов аудита для входа в систему и требуются ограниченные роли пользователей для доступа к ним, а для входа требуется лицензия Azure AD, которая должна иметь Azure AD Premium. лицензия. Но у всех них нет требований отображать свои действия с подписками Azure. Для этого вы можете непосредственно видеть это по столбцам в журналах аудита и входах в систему.
Просто необходимо установить ARPSYSTEMCOMPONENT=1 в таблице Property установщика с помощью Косатки (Не может быть сделан непосредственно в Visual Studio от того, что я знаю),
Это является наиболее часто используемым, когда программа устанавливает зависимости, и Вы не хотите, чтобы пользователь удалил зависимости вручную, они должны использовать определенный сценарий удаления, который Вы предоставили или что-то.
Лично, я создал бы патч как патч и препятствовал бы тому, чтобы патч был удален.
Также я предлагаю забрать копию Полного руководства к Windows Installer, который даст Вам некоторое объяснение о том, как, почему и где необходимо использовать приемы, такие как это. А также давая Вам действительно хорошее понимание основных принципов установщика Windows и справки Вы для разработки лучшего установщика в конечном счете. Все примеры в книге используют Visual Studio + бесплатные инструменты от SDK Windows Installer.
Править: Пользователь все еще имеет полный контроль для удаления через MSIEXEC через пользовательский ярлык удаления, который Вы обеспечиваете, все это делает, скрываются, запись в Добавляют/Удаляют Программы (ARP)
Edit2: Демонстрационный VBS для добавления свойства (если Вы хотите сделать так как часть автоматизированного процесса сборки),
Dim installer, database, view
Set installer = CreateObject("WindowsInstaller.Installer")
Set database = installer.OpenDatabase ("test.msi", 1)
Set view = database.OpenView ("INSERT INTO Property(Property.Property, Property.Value) VALUES('ARPSYSTEMCOMPONENT', '1')")
view.Execute
Set database = Nothing
Set installer = Nothing
Мог бы быть, но честно говоря, это - ужасная, ужасная идея. Это не Ваш вызов, чтобы сказать пользователю, что они могут и не могут сделать с их машиной.
И если у пользователя не должно быть способности сделать так, то это обычно определяется администратором, и пользователю не дают право удалить что-либо на основании их типа учетной записи, который снова, не что-то, на что необходимо иметь влияние.
Вы не знаете, кто его "пользователи". Это не может быть для программного обеспечения конечного пользователя вообще. Мы пишем много заказного программного обеспечения, это установлено в NOC; это не помещает информации об удалении в, добавляют/удаляют. (Мы используем NSIS Nullsoft а не установщик Visual Studio, btw...),
Слишком глупо говорить что-то вроде «Это всегда ужасная идея». В современном программном обеспечении существует множество случаев, когда удаление зависимостей может быть истинным и основательным для под рукой.
Идеалы программного обеспечения с открытым исходным кодом полезны только для людей, которые ХОТЯТ иметь возможность сломать свою машину.