使用Inno Setup脚本中Inno Setup编译器命令行上指定的路径/值

时间:2019-01-25 15:22:50

标签: inno-setup

我想传递路径(通过命令行arg using (SqlConnection con = new SqlConnection(< your connection string >)) { con.Open(); SqlCommand command = new SqlCommand(); command.CommandText = " SQL STATEMENT HERE "; command.Connection = con; command.ExecuteNonQuery(); } 到脚本编译器)到我的可执行文件,以使我的脚本使用/D确定应用程序版本号,但是我的语法不正确。如何将参数传递给GetFileVersion? 错误是:输入文件中的字符非法:“#”(0x23)

GetFileVersion

2 个答案:

答案 0 :(得分:1)

首先,SOURCEPATHInno Setup preprocessor predefined variable,因此您需要在命令行“变量”中使用另一个名称。我将使用SOURCE_PATH


第二,正确的语法是:

#define ApplicationVersion GetFileVersion(SOURCE_PATH)

(即无哈希)

为什么我的答案中没有散列
Why preprocessor behaves differently in #include directive then in [Files] section Inno Setup script

虽然原因基本相同,但为什么您在SOURCEPATH之前不使用哈希:

#define srcpath SOURCEPATH

相反,您缺少[Files]节条目中的哈希。正确的语法是:

[Files]
Source: "{#srcpath}MyApplication1.exe"; DestDir: "{app}\MyApplication1"

并且不需要定义srcpath变量。 SOURCE_PATH也是可变的。因此,您可以直接在任何表达式中使用它:

#define ApplicationVersion GetFileVersion(SOURCE_PATH)

[Files]
Source: "{#SOURCE_PATH}MyApplication1.exe"; DestDir: "{app}\MyApplication1"

答案 1 :(得分:1)

"Inno Setup Preprocessor: Command Line Compiler Execution"的文档中,我可以使用"MyCustomParam"选项定义一个名为/D的命令行参数,如下所示:

.\ISCC.exe /DMyCustomParam=MyParamValue "MySetupScript.iss"

然后我像下面这样编写我的安装脚本,该脚本获取在命令行上为该参数定义的值:

[Setup]
AppName={#MyCustomParam}