我可以将安装命令行参数放在安装期间调用的文件中吗?
Can I put setup command line parameters in a file which is called during installation instead?
创建我的 setup.exe 之后,我必须将其打包用于各种软件部署工具。因此,我不能用参数调用 setup.exe,而是将自己的参数放在 setup.exe
旁边的 setup.ini 文件中
[Code]
var
MyIniFile: String;
function InitializeSetup(): Boolean;
var
LoadFromIniFile: String;
begin
Result := true;
MyIniFile := ExpandConstant('{srcexe}'); //writes the full path of the setup.exe in "MyIniFile"
MyIniFile := Copy(MyIniFile, 1, Length(MyIniFile) - Length(ExtractFileExt(MyIniFile))) + '.ini'; //changes the ".exe" into ".ini"
if FileExists(MyIniFile) then LoadFromIniFile := MyIniFile; //checks wether there is a ini-file
if LoadFromIniFile <> '' then begin
MyLogFile := GetIniString('Setup', 'Log', MyLogFile , LoadFromIniFile);
ProductName := GetIniString('Setup', 'ProductName', ProductName, LoadFromIniFile);
end;
end;
现在我还想将所谓的 "Setup Command Line Parameters"(列在 Inno Setup Help 站点上)放入我的 ini 文件中。我认为 /Dir="x:\dirname
参数有一种方法,我还没有弄清楚。但我也想在里面有 /SILENT
参数,你认为有办法做到这一点吗?如果是,你会怎么做?如果没有,你能告诉我为什么不吗?
所以为不同的产品定制你的安装程序,我建议你使用 pre-processor 并自动为每个产品构建安装程序(具有不同的 "defines"),而不是使用外部 INI文件。
例如,要在构建安装程序时能够更改应用程序名称和生成的可执行文件,请使用如下脚本:
[Setup]
AppName={#AppName}
OutputBaseFilename={#BaseFilename}
现在您可以使用命令行自动创建两个不同的安装程序:
ISCC.exe Example1.iss /dAppName=App1 /dBaseFilename=SetupApp1
ISCC.exe Example1.iss /dAppName=App2 /dBaseFilename=SetupApp2
关于隐式静默安装:
除了触发静默安装的命令行 /SILENT
开关外,没有 API。
但是您可以通过禁用大多数安装程序页面来创建近乎无声的安装:
[Setup]
DisableWelcomePage=true
DisableDirPage=true
DisableProgramGroupPage=true
DisableReadyPage=true
DisableFinishedPage=true
实际上上面的例子禁用了所有的默认页面。但是 Inno Setup 编译器将忽略 DisableReadyPage=true
,如果之前的所有其他页面都被禁用。
您可能想选择显示其他页面。例如欢迎页面(省略 DisableWelcomePage=true
,但保留 DisableReadyPage=true
)。
如果您不介意使用外部文件(因为您已经使用了外部 INI 文件),您当然可以将安装程序包装到批处理文件中,然后使用 /SILENT
开关调用安装程序。
创建我的 setup.exe 之后,我必须将其打包用于各种软件部署工具。因此,我不能用参数调用 setup.exe,而是将自己的参数放在 setup.exe
旁边的 setup.ini 文件中[Code]
var
MyIniFile: String;
function InitializeSetup(): Boolean;
var
LoadFromIniFile: String;
begin
Result := true;
MyIniFile := ExpandConstant('{srcexe}'); //writes the full path of the setup.exe in "MyIniFile"
MyIniFile := Copy(MyIniFile, 1, Length(MyIniFile) - Length(ExtractFileExt(MyIniFile))) + '.ini'; //changes the ".exe" into ".ini"
if FileExists(MyIniFile) then LoadFromIniFile := MyIniFile; //checks wether there is a ini-file
if LoadFromIniFile <> '' then begin
MyLogFile := GetIniString('Setup', 'Log', MyLogFile , LoadFromIniFile);
ProductName := GetIniString('Setup', 'ProductName', ProductName, LoadFromIniFile);
end;
end;
现在我还想将所谓的 "Setup Command Line Parameters"(列在 Inno Setup Help 站点上)放入我的 ini 文件中。我认为 /Dir="x:\dirname
参数有一种方法,我还没有弄清楚。但我也想在里面有 /SILENT
参数,你认为有办法做到这一点吗?如果是,你会怎么做?如果没有,你能告诉我为什么不吗?
所以为不同的产品定制你的安装程序,我建议你使用 pre-processor 并自动为每个产品构建安装程序(具有不同的 "defines"),而不是使用外部 INI文件。
例如,要在构建安装程序时能够更改应用程序名称和生成的可执行文件,请使用如下脚本:
[Setup]
AppName={#AppName}
OutputBaseFilename={#BaseFilename}
现在您可以使用命令行自动创建两个不同的安装程序:
ISCC.exe Example1.iss /dAppName=App1 /dBaseFilename=SetupApp1
ISCC.exe Example1.iss /dAppName=App2 /dBaseFilename=SetupApp2
关于隐式静默安装:
除了触发静默安装的命令行 /SILENT
开关外,没有 API。
但是您可以通过禁用大多数安装程序页面来创建近乎无声的安装:
[Setup]
DisableWelcomePage=true
DisableDirPage=true
DisableProgramGroupPage=true
DisableReadyPage=true
DisableFinishedPage=true
实际上上面的例子禁用了所有的默认页面。但是 Inno Setup 编译器将忽略 DisableReadyPage=true
,如果之前的所有其他页面都被禁用。
您可能想选择显示其他页面。例如欢迎页面(省略 DisableWelcomePage=true
,但保留 DisableReadyPage=true
)。
如果您不介意使用外部文件(因为您已经使用了外部 INI 文件),您当然可以将安装程序包装到批处理文件中,然后使用 /SILENT
开关调用安装程序。