我有2个安装程序用于2个不同的应用程序,这两个应用程序都安装了一个通用的支持/诊断工具。
对于exe文件,我添加了sharedfile标志,这样当用户安装两个应用程序然后卸载其中一个时,诊断工具仍然存在。
但是,我还为诊断工具添加了一个开始菜单快捷方式,该快捷方式会被卸载程序删除。
如果其中一个应用程序仍然存在,或者诊断工具exe仍然存在,如何保留快捷方式,如果两个应用程序都被删除(或者首先只安装了一个应用程序),如何删除?
[files]
Source: "{app}_dynamic\SupportApp\*.*"; DestDir: "{app}\SupportApp"; Flags: sharedfile; Components: Support
[icons]
Name: "{group}\Tools\Send diagnostic logs"; Filename: "{app}\SupportApp\Support.exe"; Flags: uninsneveruninstall; Components: Support
[编辑] 想出了这个:
(TLama完成的初步工作:https://stackoverflow.com/a/12645836/2021217)
[code]
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if CurUninstallStep = usPostUninstall then
begin
if (not(FileExists(ExpandConstant('{app}') + '\SupportApp\Support.exe'))) then
begin
if (MsgBox('deleting "' + ExpandConstant('{group}') + '\Tools". "' + ExpandConstant('{app}') + '\SupportApp\Support.exe" doesnt exist', mbConfirmation, MB_YESNO) = IDYES) then
begin
DeleteFile('"' + ExpandConstant('{group}') + '\Tools\Send diagnostic logs"');
DeleteFile('"' + ExpandConstant('{group}') + '\Tools\Send diagnostic logs.lnk"');
RemoveDir('"' + ExpandConstant('{group}') + '\Tools"');
end;
end;
end;
end;
这一切似乎都有效,除了删除部分...... deletefile和removedir函数调用似乎无法正常工作! 任何帮助表示赞赏
答案 0 :(得分:1)
[code]
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if CurUninstallStep = usPostUninstall then
begin
if (not(FileExists(ExpandConstant('{app}\SupportApp\Support.exe')))) then
DelTree(ExpandConstant('{group}\Tools'), True, True, True);
end;
end;
非常感谢TLama指导我找到最终解决方案。