【问题标题】:Nsis temp folderNsis 临时文件夹
【发布时间】:2015-03-11 07:01:45
【问题描述】:
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

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

你能解释一下为什么吗?

【问题讨论】:

  • 您发布的代码甚至无法编译...

标签: nsis


【解决方案1】:

我建议您在.onInit 中调用InitPluginsDir 并使用$PLUGINSDIR 作为临时文件夹。退出时会自动删除。

$PLUGINSDIR

第一次使用时创建的临时文件夹的路径 插件或调用 InitPluginsDir。这个文件夹是自动 安装程序退出时删除。

【讨论】:

    【解决方案2】:

    使用System::Call时,请务必引用所有字符串参数:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-05
      • 1970-01-01
      • 2015-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-06
      • 2019-06-28
      相关资源
      最近更新 更多