论坛风格切换切换到宽版
  • 3080阅读
  • 5回复

如何实现在安装前删除安装目录下的文件夹 [复制链接]

上一主题 下一主题
离线凡笔
 

发帖
6
金钱
60
威望
6
只看楼主 倒序阅读 0 发表于: 2013-10-19
如何实现在安装前删除安装目录下的文件夹
这是我的代码:
  1. procedure CurStepChanged (CurStep: TSetupStep );
  2. begin
  3.   if CurStep = ssInstall then
  4.     DelTree ('{app}\Materials\*', False, True, True);
  5. end;

我想在安装前删除安装目录下的 Materials 文件夹里的所有文件和子文件夹
安装目录是通过注册表获取的
离线gnatix

发帖
7696
金钱
-8279
威望
-828
只看该作者 1 发表于: 2013-10-19
在 CODE 段要注意把常量进行转换,比如不能直接用 '{app}\Materials\*',而是
ExpandConstant('{app}\Materials\*')  
离线凡笔

发帖
6
金钱
60
威望
6
只看该作者 2 发表于: 2013-10-20
还是不行,这是完整代码,请帮忙查看,谢谢
  1. #define MyAppName "KeyShot 4 双语材质"
  2. #define MyAppVersion "1.2"
  3. #define MyAppPublisher "凡笔"
  4. [Setup]
  5. AppId={{9B66FB20-1D02-46F6-BC48-2DF6669BEC4E}
  6. AppName={#MyAppName}
  7. AppVersion={#MyAppVersion}
  8. AppVerName={#MyAppName} {#MyAppVersion}
  9. AppPublisher={#MyAppPublisher}
  10. DefaultDirName={reg:HKLM\SOFTWARE\Luxion\KeyShot 4,ResourceFolder}
  11. DefaultGroupName={#MyAppName}
  12. AllowNoIcons=yes
  13. LicenseFile=C:\Users\Administrator\Desktop\keyshot3\Resources\汉化说明.txt
  14. OutputBaseFilename=KeyShot 4 双语材质v1.2
  15. Compression=lzma
  16. SolidCompression=yes
  17. WizardSmallImageFile=12.bmp
  18. WizardImageFile=keyshot4.bmp
  19. [Languages]
  20. Name: "chinesesimp"; MessagesFile: "compiler:Default.isl"
  21. [Messages]
  22. BeveledLabel= 汉化:凡笔
  23. WelcomeLabel2=现在将安装 [name/ver] 到您的电脑中。%n%n推荐您在继续安装前关闭 KeyShot,并删除原材质目录 Materials%n%n部分材质要 KeyShot 4.2 才能用,建议升级到 4.2%n%n汉化:凡笔%n%n[Code]
  24. function ShouldSkipPage(PageID: Integer): Boolean;
  25. begin
  26.   result := false;
  27.   if PageID = wpSelectDir then result := true;
  28. end;
  29. function InitializeSetup(): Boolean;
  30. begin
  31.   DisabledAboutMenu(0);
  32.   Result := true;
  33.   if not RegKeyExists(HKEY_LOCAL_MACHINE, 'SOFTWARE\Luxion\KeyShot 4') then
  34.   begin
  35.     MsgBox('未检测到 KeyShot 4,请先安装!'#13#13'汉化:凡笔', mbInformation, MB_OK);
  36.     Result := False;
  37.   end;
  38. end;
  39. procedure CurStepChanged (CurStep: TSetupStep );
  40. begin
  41.   if CurStep = ssInstall then
  42.   DelTree (ExpandConstant('{app}\Materials'), True, True, True);
  43. end;
  44.   
  45. [Files]
  46. Source: "C:\Users\Administrator\Desktop\keyshot3\Resources\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
  47. [Icons]
  48. Name: "{commondesktop}\IES 浏览器"; Filename: "{app}\IESviewer299v_CHS.exe"
  49. [Run]
  50. Filename: "{reg:HKLM\SOFTWARE\Luxion\KeyShot 4,BinName}"; Description: "运行 KeyShot 4"; Flags: postinstall nowait skipifsilent
  51. Filename: "{app}\IESviewer299v_CHS.exe"; Description: "运行 IES 浏览器"; Flags: postinstall nowait skipifsilent
  52. Filename: "{app}\Textures\模德蚀纹 Mold-Tech 预览图"; Description: "查看模德蚀纹 Mold-Tech 预览图"; Flags: postinstall shellexec nowait skipifsilent
  53. Filename: "{app}\汉化说明.txt"; Description: "查看汉化说明"; Flags: postinstall shellexec nowait skipifsilent


离线gnatix

发帖
7696
金钱
-8279
威望
-828
只看该作者 3 发表于: 2013-10-21
我不知道你说的“还是不行”具体指什么,但是下面的代码是没有问题的。
procedure CurStepChanged (CurStep: TSetupStep );
begin
  if CurStep = ssInstall then
  DelTree (ExpandConstant('{app}\Materials'), True, True, True);
end;
离线gnatix

发帖
7696
金钱
-8279
威望
-828
只看该作者 4 发表于: 2013-10-21
也许你的情况跟下面这个帖子是一样的:
http://bbs.hanzify.org/read-htm-tid-97500-page-1.html
离线凡笔

发帖
6
金钱
60
威望
6
只看该作者 5 发表于: 2013-10-25
换5.5.1后就可以现实了,谢谢