繁体   English   中英

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

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

我有一个Windows桌面应用程序。 我正在使用Microsoft Visual Studio 2010安装程序项目来准备MSI。 为了我的目的,我需要在安装过程中将某个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 Installer最佳实践指出,应避免将共享资源安装到Windows /系统文件夹,并且在必须将共享资源标记为永久时。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM