我有一个安装程序 exe,它将 channel_id 参数作为命令行参数并使用它。对于不同的下载和安装,channel_id 可能不同。我想在网络上托管我的安装程序 exe,这样当它被下载并执行(通过双击)时,channel_id 会以某种方式传递给它,这应该相当于在 cmd 中使用 channel_id 运行安装程序 exe,如下所示。
cmd> myinstaller.exe channel_id
.
怎么可能这样做?
我有一个安装程序 exe,它将 channel_id 参数作为命令行参数并使用它。对于不同的下载和安装,channel_id 可能不同。我想在网络上托管我的安装程序 exe,这样当它被下载并执行(通过双击)时,channel_id 会以某种方式传递给它,这应该相当于在 cmd 中使用 channel_id 运行安装程序 exe,如下所示。
cmd> myinstaller.exe channel_id
.
怎么可能这样做?
您可以在文件名中包含您的参数。例如,将 setup_XXXX.exe 命名为 setup_XXXX.exe,而不是 setup.exe。然后从 NSIS 你可以读取和解析$EXEPATH
并从文件名中提取你的参数。
您可以将数据附加到.exe 文件的末尾。
可能不是最可靠的方法(如果有的话),但您可以检查 Zone.Identifier。我不知道在 NSIS 中本机的方法,但您可以通过命令行解析结果来实现。
尝试
nsExec::ExecToLog 'more < "$EXEPATH:Zone.Identifier"'
或者
nsExec::ExecToLog 'dir /r "$EXEPATH"'
我还发现了几个允许与Alternate Data Streams交互的 Powershell(和 VisualBasic)脚本,但我个人不是使用第三方脚本语言的忠实粉丝。