当前位置: 首页 > 知识库问答 >
问题:

在Inno Setup中使用默认值自定义命令行参数,以便我可以传递构建配置

曾歌者
2023-03-14


我想默认安装程序构建使用调试构建输出路径,以便开发人员可以创建本地安装程序进行测试,但我希望能够传递一个参数给Inno编译器,告诉它在进行适当的生产构建时使用发布输出路径。

据我所知,我无法将自定义变量添加到< code>[Setup]部分,因为我已经尝试过了

[Setup]  
Config = {param:config|Debug}

如Inno Setup是否可以接受自定义命令行参数中所述,但是我得到

无法识别[设置]部分指令“配置”

所以在我看来,唯一的选择是在#定义部分中拥有一些东西。

我看到可以在命令行使用/Dparamname=value定义参数。因此,我按照Inno Setup-Conditional Parameters中的建议,尝试了{param:Config|Debug}{param:#Config|Debug},但再次出现编译器错误:

未知的文件名前缀"..\project\bin\{param:"

如果我在 iss 文件中#define配置“调试”,那么在命令行传递 /DConfig=Release 不会覆盖调试值。

那么,有没有什么巧妙的方法来做我想要的,如果没有任何东西传递到命令行,我可以用默认值运行编译,如果命令行值可用,则使用它?
或者有没有我缺少的更简单的方法来做到这一点。

目前我的命令行调用如下所示:

iscc path\to\my\iss\file /DConfig=Release

我正在使用Inno Setup 5.5.9。

共有1个答案

桂阳文
2023-03-14

使用#ifndef

#ifndef Config
#define Config "Debug"
#endif

请注意编译时参数和运行/安装时参数之间的区别。这是关于编译时参数的。而您提到的第一个问题是关于运行/安装时参数的。

 类似资料:
  • 我知道可以通过根据构建类型提供不同的参数,例如: 然后我就可以访问源代码中的这些字段,如下所示:。但我需要的不是在gradle文件中硬编码这些值,而是在构建时通过命令提供它们。 这方面的用例是自动化,特别是在CI管道上有不同的作业,可以用不同的参数组合构建apk,而不必为每个组合创建新的构建类型。 欢迎提出其他建议。

  • 我正在编写一个需要特定设置的插件: 如果我在构建中指定该设置。conf如下所示: 然后,我可以使用命令行执行以下操作: 有没有更好的方法可以让我在构建中没有那个设置? 如果在没有该设置的情况下启动sbt,则会出现以下错误: 我搜索了google,但找不到在命令行上提供设置的方法,如下所示:

  • 问题内容: 我想做这样的事情: 但是,这会导致错误,是否可以在mysql中为默认值调用函数? 谢谢。 问题答案: 不,你不能。 但是,您可以轻松创建触发器来执行此操作,例如:

  • 问题内容: 我正在测试一些解析命令行输入的python代码。有没有办法通过IDLE传递此输入?目前,我正在保存在IDLE编辑器中,并从命令提示符处运行。 我正在运行Windows。 问题答案: 似乎IDLE没有提供通过GUI进行此操作的方法,但是您可以执行以下操作: 您也可以手动设置,例如: (信用http://wayneandlayne.com/2009/04/14/using-command-

  • 例如,我在语法中定义了几个lexer规则: 我需要以某种方式标记关键字(“int”、“float”和其他),当我使用TokenStream获取令牌时,我可以通过一些自定义符号对其进行过滤。 有可能吗? 现在我只看到一种方法——将必要的词汇组合成某种规则。 使现代化 我尝试应用下面第一个答案的第一个选项,但遇到了下一个问题:我得到一个错误:“TOKENNAME不是可识别的令牌名称” 因为这是一个问题

  • 问题内容: 我想要与的关键字类似的语义。 问题答案: Java令人困惑,因为一切都是通过值传递的。但是,对于引用类型的参数(即不是原始类型的参数),引用本身是通过值传递的,因此它似乎是按引用传递的(人们常常声称它是)。情况并非如此,如下所示: 将打印到控制台。如果要打印上面的代码,Goodbye可以使用如下所示的显式引用: