论坛风格切换切换到宽版
  • 5697阅读
  • 3回复

Inno Setup 如何实现“阅后即焚”的自述文件 [复制链接]

上一主题 下一主题
离线cker
 

发帖
61
金钱
370
威望
37
只看楼主 倒序阅读 0 发表于: 2013-08-01

打包收尾时发现一个问题,就是在脚本里 [Setup] 段使用了 Uninstallable=no,为了使卸载彻底不留尾巴,请教如何实现“阅后即焚”的自述文件?
查了帮助文件,有个ExpandConstant方法可用,但实际运行时走到 ExtractTemporaryFiles 就报错找不到 {tmp}\Readme.txt,为何?自述文件GB2312编码,系统环境是Win 7 x32,代码如下:
[Files]
Source: "d:\Readme.txt"; Flags: dontcopy
[Code]
function InitializeSetup: Boolean;
var
  S: AnsiString;
begin
  // Show the contents of Readme.txt (non Unicode) in a message box
  ExtractTemporaryFiles('{tmp}\Readme.txt');
  
if LoadStringFromFile(ExpandConstant('{tmp}\Readme.txt'), S) then
  begin
    MsgBox(S, mbInformation, MB_OK);
  end;

  Result := True;
end;

这家伙很聪明,什么都没留下。
离线cker

发帖
61
金钱
370
威望
37
只看该作者 1 发表于: 2013-08-01
上面的代码是在消息框里显示,如果能直接用默认程序打开就更好了。
请高手指教。
这家伙很聪明,什么都没留下。
离线wanfu

发帖
2734
金钱
12170
威望
1217
只看该作者 2 发表于: 2013-08-02
ExtractTemporaryFiles('{tmp}\Readme.txt');
这句改成 ExtractTemporaryFiles('Readme.txt'); 即可,
因为ExtractTemporaryFiles函数本身就是释放文件到 tmp 文件夹的。
ExtractTemporaryFiles('{tmp}\Readme.txt'); 这样的话这个函数会从tmp文件夹中找文件,但是不会找到

离线cker

发帖
61
金钱
370
威望
37
只看该作者 3 发表于: 2013-08-02
回 2楼(wanfu) 的帖子
wanfu:ExtractTemporaryFiles('{tmp}\Readme.txt'); 这句改成 ExtractTemporaryFiles('Readme.txt'); 即可,因为ExtractTemporaryFiles函数本身就是释放文件到 tmp 文件夹的。ExtractTemporaryFiles('{tmp}\Readme.txt'); 这样 .. (2013-08-02 09:24) 

多谢指正,确实可以了。
后来发现可以直接在 [Run] 加上默认程序打开功能,就不用死板的对话框显示了。
这家伙很聪明,什么都没留下。