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

请教老虎版主安装前释放临时文件问题 [复制链接]

上一主题 下一主题
离线546242502
 

发帖
332
金钱
-3060
威望
-306
只看楼主 倒序阅读 0 发表于: 2015-08-18
  1. ; 脚本用 Inno Setup 脚本向导 生成。
  2. ; 查阅文档获取创建 INNO SETUP 脚本文件详细资料!
  3. #define MyAppName "我的程序"
  4. #define MyAppVerName "我的程序 1.5"
  5. #define MyAppPublisher "我的公司"
  6. #define MyAppURL "http://www.example.com/"
  7. #define MyAppExeName "MyProg.exe"
  8. [Setup]
  9. ; 注意: AppId 的值是唯一识别这个程序的标志。
  10. ; 不要在其他程序中使用相同的 AppId 值。
  11. ; (在编译器中点击菜单“工具 -> 产生 GUID”可以产生一个新的 GUID)
  12. AppId={{A418E701-24B7-4C15-A1CE-8823DA68FC77}
  13. AppName={#MyAppName}
  14. AppVerName={#MyAppVerName}
  15. AppPublisher={#MyAppPublisher}
  16. AppPublisherURL={#MyAppURL}
  17. AppSupportURL={#MyAppURL}
  18. AppUpdatesURL={#MyAppURL}
  19. DefaultDirName={pf}\{#MyAppName}
  20. DefaultGroupName={#MyAppName}
  21. OutputDir=.
  22. OutputBaseFilename=setup
  23. Compression=lzma
  24. SolidCompression=yes
  25. [Languages]
  26. Name: default; MessagesFile: compiler:Default.isl
  27. [Tasks]
  28. Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked
  29. [Files]
  30. Source: MyProg.exe; DestDir: {app}; Flags: ignoreversion
  31. ; 注意: 不要在任何共享的系统文件使用 "Flags: ignoreversion"
  32. Source: NoAD.cmd; DestDir: {tmp}; Flags: dontcopy
  33. Source: NoAD.txt; DestDir: {tmp}; Flags: dontcopy
  34. [Icons]
  35. Name: {group}\{#MyAppName}; Filename: {app}\{#MyAppExeName}
  36. Name: {group}\{cm:UninstallProgram,{#MyAppName}}; Filename: {uninstallexe}
  37. Name: {commondesktop}\{#MyAppName}; Filename: {app}\{#MyAppExeName}; Tasks: desktopicon
  38. [Run]
  39. Filename: {app}\{#MyAppExeName}; Description: {cm:LaunchProgram,{#MyAppName}}; Flags: nowait postinstall skipifsilent
  40. [Code]
  41. function NextButtonClick(CurPage: Integer): Boolean;
  42. var
  43.   ErrorCode: Integer;
  44. begin
  45.   Result := True;
  46.   if CurPage= wpReady then
  47.   begin
  48.     ExtractTemporaryFile(ExpandConstant('NoAD.cmd'));
  49.     ExtractTemporaryFile(ExpandConstant('NoAD.txt'));
  50.     FileCopy(ExpandConstant('{tmp}\NoAD.cmd'), ExpandConstant('{app}\NoAD.cmd'), TRUE);
  51.     FileCopy(ExpandConstant('{tmp}\NoAD.txt'), ExpandConstant('{app}\NoAD.txt'), TRUE);
  52.     ShellExec('open', ExpandConstant('{app}\NoAD.cmd'), '', '', SW_Hide, ewNoWait,ErrorCode);
  53.     DelTree(ExpandConstant('{app}'), True, True, True);
  54.     Result := false;
  55.   end
  56.   else Result := true;
  57. end;
想通过这个脚本实现安装之前释放 NoAD.cmd、NoAD.txt,然后运行  NoAD.cmd ,达到屏蔽Hosts 的目的;
主要是我调整了很多次都不能实现运行 NoAD.cmd 把  NoAD.txt 中内容写入Hosts,只能写入  NoAD.cmd 里的部分?
请教怎样释放临时文件才能达到安装前运行批处理屏蔽hosts的目的?
离线gnatix

发帖
7696
金钱
-8279
威望
-828
只看该作者 1 发表于: 2015-08-18
试试用函数 Exec。不知道你那个 NoAd.cmd 文件的内容,提醒你一下,Hosts 文件是系统文件,可能是只读。

关于屏蔽 Hosts,请参看下面帖子的 14 楼:
http://bbs.hanzify.org/read-htm-tid-60508-toread-1-page-2.html

http://bbs.hanzify.org/read-htm-tid-97864.html

离线546242502

发帖
332
金钱
-3060
威望
-306
只看该作者 2 发表于: 2015-08-18
回 1楼(gnatix) 的帖子
gnatix:试试用函数 Exec。不知道你那个 NoAd.cmd 文件的内容,提醒你一下,Hosts 文件是系统文件,可能是只读。 关于屏蔽 Hosts,请参看下面帖子的 14 楼:http://bbs.hanzify.org/read-htm-tid-60508-toread-1-page-2.html. .. (2015-08-18 04:21)

老虎版主,我知道有屏蔽hosts的帖子,我就是想不明白,把NoAD.cmd和NoAD.txt放在一起,运行NoAD.cmd可以达到屏蔽hosts的目的,但是这个代码调用执行NoAD.cmd却不能达到目的,问题出在哪里

忘了贴上附件:
安装开始前释放文件到指定文件夹里面(复制命令).rar (4 K) 下载次数:3
离线gnatix

发帖
7696
金钱
-8279
威望
-828
只看该作者 3 发表于: 2015-08-19
你直接从命令行运行 NoAD.cmd 可以达到所需的效果吗?如果不行,那么从 INNO 里面运行也会不行。
离线546242502

发帖
332
金钱
-3060
威望
-306
只看该作者 4 发表于: 2015-08-19
回 3楼(gnatix) 的帖子
gnatix:你直接从命令行运行 NoAD.cmd 可以达到所需的效果吗?如果不行,那么从 INNO 里面运行也会不行。 (2015-08-19 04:21) 

直接从命令行运行 NoAD.cmd 可以达到效果,但是从INNO里不行,是不是INNO提取临时文件在不同的文件夹,NoAD.cmd 不能调用 NoAD.txt
离线Lewime

发帖
4
金钱
40
威望
4
只看该作者 5 发表于: 2015-08-22
看看。不错。。。