SCITE 用户设置以及用户设置目录的启动设置

我希望实现SCITE的用户目录自定义,以实现完全的配置与程序文件便携化,也就是完全不依赖外部的任何定义方式。只要将配置与程序文件打包后就可以使用(并非完全如此,至少换环境时还是需要改下配置文件中的路径的)。

SCITE 的配置文件查找顺序.

查看SCITE官方的帮助文件,可以发现其使用变量SciteUserHome存储用户配置的位置。而且指出

There are some variables set by the environment to access the name of the current file as well The SciteDefaultHome and SciteUserHome variables are protected and can not be set in local or directory options.

也就是说显然不能在配置文件中进行指定了,而且可以理解,你不能在配置文件读取之前知道里面SciteUserHome的值并设定目录,这是做不到的。但是可以在环境变量中设定。但我不想让这个设置污染我的系统环境变量,所以还需要优化。

所以现在问题简单了,需要在启动程序时,通过不经过系统环境变量的方式设置程序运行环境的环境变量值。

启动时设置环境变量

可以通过命令行临时设置环境变量并启动以绕开该限制。但是命令行会导致打开时有黑色命令行窗口。我希望能够以完全无副作用的方式完成这一点。所以我选中的是vbs脚本。只需要在无弹窗的vbs脚本里面定义变量并启动scite就可以了。

换了文件夹或者打包重新发布时,只需要在解压到位后,重新修改vbs里面定义的路径变量的值就可以了。

全套的vbs脚本如下

  • LaunchSciTE.vbs
' ==================================================
'  无黑窗启动 SciTE 的 VBScript 脚本 (支持参数传递)
' ==================================================

' 创建一个用于操作系统的外壳对象
Set objShell = CreateObject("WScript.Shell")

' 定义 SciTE 的根目录,方便修改
Dim sciTeUserHome
sciTeUserHome = "C:\Users\admin\Portable\wscite577"
' 根据你自己的需要,定义 SciTE 的根目录,方便修改
' 相应的,你也需要根据你自己的需要做出修改,而不是沿用我们现在的

' 1. 设置环境变量 (这只对即将启动的SciTE进程有效)
'    这等同于批处理中的: set SciTE_USERHOME=...
objShell.Environment("Process")("SciTE_USERHOME") = sciTeUserHome

' 2. 设置工作目录
'    这等同于批处理中的: cd /d ...
Dim sciTeWorkDir
sciTeWorkDir = sciTeUserHome & "\wscite"
objShell.CurrentDirectory = sciTeWorkDir

' 3. 构建要执行的完整命令
'    首先,定义基础的可执行文件
Dim strCommand
strCommand = "SciTE.exe"

'    然后,检查是否有参数传递给本 VBScript 脚本
If WScript.Arguments.Count > 0 Then
    ' 如果有参数,就遍历所有传入的参数
    Dim arg
    For Each arg In WScript.Arguments
        ' 将每个参数用双引号包裹 (以正确处理带空格的路径),然后拼接到命令后面
        ' 例如,最终命令会变成: SciTE.exe "C:\My Documents\file.txt"
        strCommand = strCommand & " " & """" & arg & """"
    Next
End If

' 4. 运行构建好的完整命令 (带有参数的 SciTE.exe)
'    参数 "1" 表示以正常窗口大小显示
'    参数 "False" 表示脚本不用等待SciTE关闭,启动后立刻退出
objShell.Run strCommand, 1, False

' 释放对象
Set objShell = Nothing

内容声明与版权协议

  • 版权协议:本文采用 CC BY-NC-SA 4.0(署名-非商业性使用-相同方式共享) 协议进行许可。转载、演绎请务必保留作者署名及原文链接,且不得用于商业目的。
  • AI 辅助说明:本博客部分内容(如排版设计、个别局部、特定对话片段等)可能由 AI(LLM大语言模型)辅助生成。作者在此明确声明:本人对文章的核心框架、思想立论与最终呈现拥有绝对主导权与最终解释权。
  • 观点免责:文中明示的由 AI 生成的特定文本、对话输出,仅作为理性探讨以及观点展示,不代表本人真实立场、价值观或事实背书。对于因 AI 幻觉造成的客观事实偏差,请读者审慎甄别。
  • 认知时效性:文章仅代表作者在撰写当下的认知状态与情绪切片。随着个人心智迭代与客观事物发展,作者观点可能发生演变。欢迎基于理性的交流与批评。