在安装文件中创建自定义可执行文件

时间:2014-04-15 12:58:44

标签: installation inno-setup

我希望我的InnoSetup可以允许客户安装两个程序中的一个或安装两个程序。

我做了额外的选择面板,用户检查他想要安装的内容,但我有以下问题

  1. 如何更改硬编码的AppName?
  2. 如何动态告诉安装程序的位置?

    例如默认安装目录是> Program Files\Program 1 如何将其更改为Program Files\Program 2

  3. 如何更改UninstallDisplayIcon?

    目前UninstallDisplayIcon={app}\program1.exe

    如何更改它取决于所选设置:UninstallDisplayIcon={app}\program2.exe


  4. 当前配置(来自评论):

    [Run]
    Filename: {app}\{#MyAppExeName};
    Description: {cm:LaunchProgram,{#MyAppName}};
    Flags: nowait postinstall skipifsilent
    

    MyAppExeName当前在文件开头定义的常量。

    我的问题是如何做这样的事情:

    [Run]
    Filename: {app}\MYFUNCTIONFROMCODESECTION_THAT_WILL_RETURN_NAME;
    Description: {cm:LaunchProgram,{#MyAppName}};
    Flags: nowait postinstall skipifsilent
    

1 个答案:

答案 0 :(得分:3)

如何在运行时更改AppName指令值?

由于在安装程序的初始化时间进行评估,因此无法在运行时更改AppName指令值。

如何有条件地指定已安装的文件目的地?

为此,您可以使用{code:...}脚本常量。例如:

[Files]
Source: "MyApp.exe"; DestDir: "{code:GetMyAppDestDir}"

[Code]
function GetMyAppDestDir(Value: string): string;
begin
  Result := '<Here return the path where the file should be installed...>';
end;

如何在运行时更改UninstallDisplayIcon指令值?

为此,您还可以使用{code:...}脚本常量。例如:

[Setup]
UninstallDisplayIcon={code:GetUninstallDisplayIcon}

[Code]
function GetUninstallDisplayIcon(Value: string): string;
begin
  Result := '<Here return the path of the icon to be used for uninstaller...>';
end;