卸载程序不会删除复制到VS2010安装程序项目中的系统文件夹。

Uninstaller doesn't delete copied library to System Folder in VS2010 installer project.

本文关键字:程序 项目 系统文件夹 安装 删除 复制 卸载 VS2010      更新时间:2023-10-16

我有一个windows桌面应用程序。我正在准备msi使用微软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/系统文件夹中,并且在必须安装时,应将其标记为永久资源。