【问题标题】:Use innosetup script to delete previously installed application folder使用 innosetup 脚本删除以前安装的应用程序文件夹
【发布时间】:2011-01-28 15:39:21
【问题描述】:

我正在使用脚本删除以前的应用程序,该脚本又调用我的 .net 应用程序。我想要的只是从开始菜单(开始->程序->app1->卸载app1)中实际删除文件夹(整个app1)?

谢谢 高卢人

【问题讨论】:

    标签: inno-setup


    【解决方案1】:

    这些都不适合我,在变通之后,这是我的解决方案; 在[设置]

    //Delete old entry folder from start menu
    procedure DeleteOldStartMenuEntry;
    var
     entry: String;
    begin
     //Replace "Diviner" with desired folder name 
     entry := ExpandConstant('{commonprograms}') + '\Diviner\';
     if DirExists(entry) then begin
       DelTree(entry, true, true, true);
      end 
    end;
    

    在InitializeSetup里面调用你的程序:

    function InitializeSetup: Boolean;
    var:
        ....
    begin
        ....
        DeleteOldStartMenuEntry;
        ....
    end;
    

    【讨论】:

    • 这对我来说就像一个魅力 - InnoSetup 甚至关闭资源管理器窗口以便能够删除目录。
    【解决方案2】:

    感谢克雷格,我的新应用没有相同的名称 (app2) 以下为我工作

    [InstallDelete]
    Type: filesandordirs; Name: {commonprograms}\app1 
    

    【讨论】:

    • 请注意,如果用户更改了默认安装路径,这将不起作用。
    • 你的意思是如果用户没有安装在programfiles下就不行吗?
    【解决方案3】:

    如果您只想从“开始”菜单中删除“卸载 app1”图标,以下操作应该可以:

    [InstallDelete]
    Type: files; Name: "{group}\uninstall app1"
    

    如果要从开始菜单中删除整个程序组,请使用以下命令:

    [InstallDelete]
    Type: filesandordirs; Name: "{group}"
    

    这假定您的 Inno Setup 脚本开始菜单文件夹名称与之前的“app1”应用程序相同。

    【讨论】:

    • 如果您需要删除特定的菜单项,您需要应用.lnk 例如:类型:文件;名称:“{group}\uninstall app1.lnk”
    猜你喜欢
    • 1970-01-01
    • 2020-01-15
    • 1970-01-01
    • 2012-01-13
    • 1970-01-01
    • 1970-01-01
    • 2012-06-21
    • 2017-10-27
    • 1970-01-01
    相关资源
    最近更新 更多