我想传递路径(通过命令行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
答案 0 :(得分:1)
首先,SOURCEPATH
是Inno 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}