NSIS在运行时设置临时文件夹名称

时间:2013-09-17 08:32:44

标签: nsis

我目前正在Windows临时目录中的文件夹中提取安装程序所需的一些文件。我现在设置的方式是该文件夹具有基于产品名称和日期的唯一名称。

问题是整个文件夹名称变量是在安装程序构建时设置的,而不是在安装程序运行时设置的,这意味着每次运行相同的安装程序时我都没有新的临时文件夹。

我用来创建文件夹的代码是:

; Support folder
;  this folder will contain temporary files visibible only for the lifetime of the installation
!define /date SUPPORTDIR "$TEMP\${PRODUCT_NAME}_%y%m%d%H%M%S"

var InitSupportDirDone
function InitSupportDir
    ${if} $InitSupportDirDone != 1
        SetOutPath "${SUPPORTDIR}"
        !include supportfiles.nsh
        StrCpy $InitSupportDirDone 1
    ${endif}
functionend

这会导致我的SUPPORTDIR已经设置,从构建日志中可以看出:

!define: "SUPPORTDIR"="$TEMP\Test-Proj_130911164903"

如何更改此设置,以便每次安装程序运行时而不是在生成时设置日期(和文件夹名称)?

1 个答案:

答案 0 :(得分:1)

您可以创建一个循环,以0后缀开头并增加它,只要具有该名称的文件夹存在但在您不需要的情况下,只需在InitPluginsDir中调用.onInit即可并使用$pluginsdir作为临时文件夹......