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

NSIS在运行时设置临时文件夹名称,nsis,Nsis,我目前正在Windows temp目录下的文件夹中提取安装程序所需的一些文件。我现在设置它的方式是,该文件夹有一个基于产品名称和日期的唯一名称 问题是,整个文件夹名称变量是在安装程序构建时设置的,而不是在安装程序运行时设置的,这意味着每次运行同一安装程序时,我都没有新的临时文件夹 我用来创建文件夹的代码是: ; Support folder ; this folder will contain temporary files visibible only for the lifetime of

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

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

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

; 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
这会导致已设置my SUPPORTDIR,从生成日志中可以看出:

!定义:“SUPPORTDIR”=“$TEMP\Test-Proj_130911164903”


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

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