У меня есть приложение для рабочего стола Windows. Я готовлю MSI с помощью проекта Microsoft Visual Studio 2010. Для моей цели мне нужно скопировать определенную DLL в системную папку во время установки. Когда я запускаю программу удаления после завершения установки, она не удаляет эту библиотеку из системной папки.
Есть ли способ сделать это?
Вот мой UnInstaller.cpp
int _tmain(int argc, _TCHAR* argv[])
{
//WinExec("msiexec.exe /i {B49233F8-814D-432F-BE05-D6BA334A0087}", SW_SHOW);
WinExec("msiexec.exe /i {050E4942-5DF2-4F46-B6BC-1296761DA4C1}", SW_SHOW);
}
Если вы когда-либо отметили свойства этого файла в настройках как Permanent или SharedLegacyFile и установили его, он не будет удален. Они не являются настройками, которые вы можете изменить в проекте, и ожидайте, что они изменятся в системе, потому что система пометит их как не удаляемые. Если вы посмотрите, например, в HKLM \ Software \ Microsoft \ Windows \ CurrentVersion \ SharedDlls и там указан путь к вашему файлу, то вы без необходимости отметили его как общий.
В рекомендациях установщика Windows говорится, что следует избегать установки общих ресурсов в папки windows / system и что при необходимости они должны быть помечены как постоянные.