我用INNO SETUP打包,写了一个[Code]段[Code]var
CheckBox: TCheckBox;
ErrorCode: Integer;
function OnWizardNext(Sender:TWizardPage):Boolean;
begin
  if CheckBox.State=cbChecked then
  begin
   ShellExec('open','http://www.abc.com/','','',SW_SHOWNORMAL, ewNoWait, ErrorCode);
  //?????????????????????????????????????????????????????????????????????????????   
  end;
  Result:=True;
end;
 procedure InitializeWizard();
var
  Page: TWizardPage;
  Labecaption: TLabel;
  BitmapImageIe: TBitmapImage;
  BitmapFileName: String; begin
  Page := CreateCustomPage(wpInstalling, '运行ABC', '运行我的程序ABC。');
  Page.OnNextButtonClick:=@OnWizardNext
  CheckBox := TCheckBox.Create(Page);
  CheckBox.left := 4;
  CheckBox.Top := 45;
  CheckBox.Width := 273;
  CheckBox.Height := 17;
  CheckBox.Caption := '运行ABC。';
  CheckBox.Checked := True;
  CheckBox.Parent := Page.Surface;
end;运行上边的程序打包,可以在制作的安装程序“安装”过程中,打钩时就连接到http://www.abc.com/网站,
不过,我如果想运行已经安装的一个文件,这个文件的位置及文件名为:{app}\ABC.exe用ShellExec('open','{app}\ABC.exe','','',SW_SHOWNORMAL, ewNoWait, ErrorCode); 就没有效果,也没有错误信息出现。
如何能让打钩后运行{app}\ABC.EXE文件呢,请教了

解决方案 »

  1.   

    Inno本身就有这个功能,你装IsTool了吗,装个IsTool,左边的列表中有个INstall Run或者中安装完成后运行,在里面添加文件就可以了
      

  2.   

    赌博输钱了,来挣点分用
    ; 脚本用 Inno Setup 脚本向导生成。
    ; 查阅文档获取创建 INNO SETUP 脚本文件详细资料![Setup]
    AppName=我的程序
    AppVerName=我的程序 1.5
    AppPublisher=我的公司
    AppPublisherURL=http://www.mycompany.com
    AppSupportURL=http://www.mycompany.com
    AppUpdatesURL=http://www.mycompany.com
    DefaultDirName={pf}\我的程序
    DefaultGroupName=我的程序
    Compression=lzma
    SolidCompression=yes[Tasks]
    Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
    ;在这里增加一句话
    Name: RunABC; Description: {cm:RunABC}
    [Files]
    Source: "C:\Program Files\Inno Setup 4\Examples\MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion
    ; 注意: 不要在任何共享系统文件中使用“Flags: ignoreversion”[Icons]
    Name: "{group}\我的程序"; Filename: "{app}\MyProg.exe"
    Name: "{userdesktop}\我的程序"; Filename: "{app}\MyProg.exe"; Tasks: desktopicon[Run]
    Filename: "{app}\MyProg.exe"; Description: "{cm:LaunchProgram,我的程序}"; Flags: nowait postinstall skipifsilent
    ;在这里增加一句话
    Filename: {app}\ABC.exe;  Tasks: RunABC;在这里增加一句话
    [CustomMessages]
    RunABC="运行ABC.exe"
      

  3.   

    我不是要在附加任务的窗口上加上一个选项,而是要增加一个页面后在这个页面上加CheckBox,但加了以后
    如果将上边的ShellExec('open','http://www.abc.com/','','',SW_SHOWNORMAL, ewNoWait, ErrorCode); 
      //?????????????????????????????????????????????????????????????????????????????  改成
    ShellExec('open','c:\ABC.exe','','',SW_SHOWNORMAL, ewNoWait, ErrorCode);
    也是可以运行的,就是说这个地方好像需要绝对路径,如果用上了{app}\ABC.exe就不行了。
    这个问题可以解决么?
      

  4.   

    确保路径下要已有这个EXE才行
      

  5.   

    当然有了,wpInstalling就表示是在安装后运行,关键是如何解决在[code]段中{app}不可用的问题我原先想了一个方法,就是在安装过程中,先将{app}的实际内容,如C:\Program Files\ABCD\ 写入注册表,(这个是可以做到的),然后再读取这个注册表的内容,读取时用RegGetValueNames(HKCU, "Software\ABCD\ABC", "apppath"),读取后用ShellExec('open',???+'\ABC.exe','','',SW_SHOWNORMAL, ewNoWait, ErrorCode);
    来运行,关键是???如何写,PASCAL语言我不太懂
      

  6.   

    看下帮助,也可以根据<向导>制作就可以了
    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
      

  7.   

    已经解决,谢谢各位,顺便将思路说出来与大家共享:1、在[Registry]中将{app}的值写入注册表
    2、用RegQueryStringValue读取该注册键值,得到实际路径
    3、用ShellExec加上实际路径运行EXE文件谢谢各位的参与。
      

  8.   

    以后有不会的,关于PASCAL方面的,还得向各位请教,分不多,见谅
      

  9.   

    试试 ExpandConstant('{app}\ABC.exe'),
      

  10.   

    好在有这个帖子,忙活了一个小时,app的值没有取出来。谢谢楼上各位。