nsis - 我可以在 NSIS 中推送/弹出 SetOverwrite 标志的值吗?

标签 nsis

在函数或宏内部,我经常需要特定的 SetOverwrite行为。但是,我更喜欢让这些子程序自行清理(不在堆栈上留下非返回值,保持 OutPath 相同,不改变全局状态等),这样我就不必复制设置流每次我想做某事时都会输入命令,以便使代码更具可读性。

有没有办法用SetOverwrite来完成这个任务?我可以“检测”它、保存它并以某种方式恢复它吗?

我看不到 GetOverwrite 函数。 SetOverwrite 文档提到了“覆盖标志”,尽管我找不到具体的引用资料。有没有办法获取此(或任意)标志的值?

最佳答案

您无法将标志的当前状态保存在变量中,但 SetOverwrite 允许您使用 lastused 作为参数,这会恢复标志的值在最后一个 SetOverwrite 之前使用。所以你不能递归地保存标志,但你可以在File之前将其设置为临时并在其之后恢复它:

${If} $something = "whatever"
  SetOverwrite on
${Else}
  SetOverwrite ifnewer
${EndIf}

File "foo.txt"

SetOverwrite lastused

关于nsis - 我可以在 NSIS 中推送/弹出 SetOverwrite 标志的值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56294207/

相关文章:

java - NSIS Eclipse 插件无法在 Helios 和 Linux 平台上工作

NSIS 检查是否存在空目录

nsis - 使用 NSIS 创建快捷方式

MySQL 静默安装(使用 NSIS)无法正常工作

windows - 获取 %ALLUSERSPROFILE% 的 NSIS 变量

nsis : How to insert background picture with nsdialog or function in MUI_PAGE_INSTFILES

sqlite - NSIS和SQLITE集成

java - 如何通过 NSIS 脚本使 prunsvr 工作

windows - 使 Windows 刷新图标缓存

tomcat - 如何使用 NSIS 复制文件?