我有一个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);
}
答案 0 :(得分:2)
如果您在设置中将该文件的属性标记为Permanent或SharedLegacyFile并将其安装,则不会将其卸载。它们不是您在项目中更改的设置,并且期望它们在系统上更改,因为系统会将它们标记为不卸载。例如,如果您查看HKLM \ Software \ Microsoft \ Windows \ CurrentVersion \ SharedDlls以及文件的路径,那么您将不必要地标记为共享。
答案 1 :(得分:1)
Windows Installer最佳做法规定应避免将共享资源安装到Windows /系统文件夹,并且必须将它们标记为永久性。