问题是我在setup.rul里面加上了下面的代码,可是在通过控制面板卸载的时候,好像没有运行这段代码。
应该怎么加这段代码才能达到我的目的?export prototype OnUnInstalled(HWND);
function OnUnInstalled(hMSI)   begin 
if (ExistsDir (INSTALLDIR)) then
if (DeleteDir (INSTALLDIR, ALLCONTENTS) != 0) then 
            MessageBox ("Unable to delete directory:" + INSTALLDIR, SEVERE); 
        endif; 
    endif; 
end;   

解决方案 »

  1.   

    你现在仅仅是创建了一个脚本,还需要定义Custom Action1、到Custom Actions and Sequences下,使用Custom Action Wizard新建一个Custom Action,随便起个名字,然后选择“InstallScript”
    2、点击“下一步”以后,选择你所定义的OnUninstalled方法
    3、也是最重要一步,在“Insert into sequence”页面中,选择“Install Execute Sequence”为“After InstallFinalize”,然后设置“Install Execute Condition”为“Not Installed”注意:如果通过上面的方法还不成功,你试着调整这个Custom Action的Install Execute Sequence属性(也就是什么时候执行这个CustomAction),然后再试。
    另外还有一点,DeleteDir函数是否能够连带子目录以及其中的文件一起删除,还需要你自己仔细参考这个函数的说明。否则也无法删除目录。
      

  2.   

    上面的说错了一个地方,应该是:然后设置“Install Execute Condition”为“REMOVE="ALL"”
      

  3.   

    http://hi.baidu.com/godgod/blog/item/ccce4ced3c3167d2b31cb1a7.html有你需要的
      

  4.   

    TO:acqy 有这方面的教材吗?
      

  5.   

    不用installshield,那好像要买的吧。我都是用NSIS,开源的,打包代码直接写代码,可控性比较好。
      

  6.   


    由于公司要求要IS,所以公司就有license,我也是最近才研究IS,IS的可控性确实没有其它的强大啊。比较难学。
      

  7.   


    我也没有找到非常合理的教程,这只是我自己摸索出来的。如果你英文比较好,建议你上英文google搜索一下,或者到http://community.acresso.com搜索一下,应该相关的内容还是比较多的。