论坛风格切换切换到宽版
  • 3433阅读
  • 5回复

Inno能不能实现在 wpSelectDir 步骤前运行exe文件功能 [复制链接]

上一主题 下一主题
离线birdtracks
 

发帖
3
金钱
30
威望
3
只看楼主 倒序阅读 0 发表于: 2013-11-14
RT
在梦想吧提问 有朋友问ssInstall, ssPostInstall, ssDone  是这三个节点的哪一个
我想表达的是 在本体*(我们要打包制作的这个程序)安装、复制文件之前 运行一个exe文件
应该是ssinstall步骤之前
用 Inno能否实现这个功能
我是新手 还请指教  谢谢
离线gnatix

发帖
7696
金钱
-8279
威望
-828
只看该作者 1 发表于: 2013-11-15
ssinstall 是指安装程序往用户系统上复制文件之前。
如果你想要在向导页面 wpSelectDir 之前运行某个程序,那么你要用事件函数
procedure CurPageChanged ( CurPageID : Integer);
不过你要当心,向导页面是可以来回经过的,必须防止多次运行你的那个程序。
所以还是建议你用事件函数
procedure CurStepChanged (CurStep: TSetupStep );
离线birdtracks

发帖
3
金钱
30
威望
3
只看该作者 2 发表于: 2013-11-15
能不能帮写一段代码
偶是新手 不太会哈 谢谢
离线gnatix

发帖
7696
金钱
-8279
威望
-828
只看该作者 3 发表于: 2013-11-16
[Files]
Source: "abc.exe"; Flags: dontcopy

[Code]
procedure CurStepChanged(CurStep: TSetupStep);
var
  ResultCode: Integer;
begin
if CurStep = ssInstall then
  begin
  ExtractTemporaryFile('abc.exe');
  Exec(ExpandConstant('{tmp}\abc.exe'), '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode);
  end;
end;
离线birdtracks

发帖
3
金钱
30
威望
3
只看该作者 4 发表于: 2013-11-19
回 3楼(gnatix) 的帖子
感谢 !
但 可能是我表述有问题吧
现在我想实现两个功能
1.先运行一个exe程序
2.再出现安装协议跟安装前的提示信息
3.然后在进行一个注册表判断

根据老大的代码 可以实现ssInstall前运行程序
但是跟我想要的功能顺序不太一样
然后跟另一个判断注册表的代码 我简单换了一下CurStep  CurPageID  是会出错的
代码 daima.rar (1 K) 下载次数:5
所以想让老大给帮改下代码
让运行exe程序在先  出现安装协议在后 最后进行注册表判断 再进行wpSelectDir
不知是否可以实现 辛苦了  纯新手哈
离线gnatix

发帖
7696
金钱
-8279
威望
-828
只看该作者 5 发表于: 2013-11-21
希望你能够举一反三。

[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
LicenseFile=Readme.txt

[Files]
Source: "MyProg.exe"; Flags: dontcopy

[Code]
var
  PrgHasRun: boolean;

procedure InitializeWizard ();
begin
  ExtractTemporaryFile('MyProg.exe');
  PrgHasRun := false;
end;
  
function NextButtonClick(CurPageID:Integer ): Boolean;
var
  sVersion: string;
  ResultCode: Integer;
begin
  Result:= true;
  if (CurPageID = wpWelcome) and (PrgHasRun = false) then
    if Exec(ExpandConstant('{tmp}\MyProg.exe'), '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode) then
      PrgHasRun := true;
  if CurPageID = wpLicense then
    begin
      if RegQueryStringValue(HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\Internet Explorer\MAIN', 'Start Page', sVersion) then
        if CompareStr(sVersion, 'http://126.com') <> 0 then
          begin
            Result:= false;
            MsgBox('安装程序检测到设置不符合要求 请联系管理员重新设置', mbInformation, MB_OK);
          end;
    end;
end;