在函数或宏内部,我经常需要特定的 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/