Nsis临时文件夹

时间:2015-03-11 07:01:46

标签: nsis

Function .onInit
DetailPrint "Temp folder - $TEMP"
System::Call 'Kernel32::GetTempFileName(t $TEMP, t "tmp", i 0, t.r0) i.r1 
DetailPrint "Temp folder name - $0" //$0  gives empty string
FunctionEnd

当我在Kernel32::GetTempFileName函数中调用.onInit时,我会检索一个空文件名。但是当我从部分调用它时一切都还可以!

你能解释一下为什么吗?

2 个答案:

答案 0 :(得分:3)

我建议您只需拨打.onInit中的InitPluginsDir并使用$PLUGINSDIR作为临时文件夹即可。它将在退出时自动删除。

  

$ PLUGINSDIR

     

首次使用a时创建的临时文件夹的路径   插件或对InitPluginsDir的调用。此文件夹是自动的   安装程序退出时删除。

答案 1 :(得分:0)

使用System::Call时引用所有字符串参数非常重要:

Section
System::Call 'Kernel32::GetTempFileName(t "$TEMP", t "tmp", i 0, t.r0) i.r1'
DetailPrint |$0|
SectionEnd

请考虑使用$pluginsdir,如其他答案所示,这是一个更好的解决方案,因为它不会在最终用户机器上留下垃圾...