2016-11-21 7 views
1

[Code]セクションにダウンロードされたファイルを、インストールするファイルとして[Run]セクションでどのように解凍するのですか?Inno SetupでダウンロードしたZIPファイルからライセンスを表示します

ここに私のコードです。問題は、ダウンロードが完了した後でzipファイルを展開したいのです。私は私のコードの中にそれがあるとは思わない。私はこれを入力すると、私はエラーが出るので:

[Files] 
Source: "{tmp}\apache-tomcat-9.0.0.M13\bin\tomcat9.exe"; DestDir: "{app}"; Flags: ignoreversion 
Source: "C:\Users\...\apache-tomcat-9.0.0.M13\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs 

の下

[Setup] 
LicenseFile={tmp}\apache-tomcat-9.0.0.M13\LICENSE 
InfoBeforeFile={tmp}\apache-tomcat-9.0.0.M13\NOTICE 
InfoAfterFile={tmp}\apache-tomcat-9.0.0.M13\RELEASE-NOTES 

の下

私は、ファイルが存在しないことのようなコンパイルエラーを取得します。

ライセンスおよびリリースノートとしてダウンロードして抽出したファイルを使用するにはどうすればよいですか?

抽出したい段階で.zipファイルが抽出されているかどうかはわかりません。ここでは、これらの質問に基づいてコンパイル私のコードは次のとおりです。

#include <idp.iss> 

[Setup] 
LicenseFile=C:\..\Desktop\x64\apache-tomcat-9.0.0.M13\LICENSE 
InfoBeforeFile=C:\...\x64\apache-tomcat-9.0.0.M13\NOTICE 
InfoAfterFile=C:\...\x64\apache-tomcat-9.0.0.M13\RELEASE-NOTES 
DisableWelcomePage=no 

[Files] 
Source: "C:\...\x64\apache-tomcat-9.0.0.M13\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs 
Source: "7za.exe"; DestDir: "{tmp}"; Flags: deleteafterinstall; 

[Code] 

procedure InitializeWizard; 
begin 
  idpAddFile('http://www-us.apache.org/dist/tomcat/tomcat-9/v9.0.0.M13/bin/apache-tomcat-9.0.0.M13-windows-x64.zip', ExpandConstant('{tmp}\apache-tomcat-9.0.0.M13-windows-x64.zip')); 
  idpDownloadAfter(wpWelcome); 
end; 

[Run] 
Filename: {tmp}\7za.exe; Parameters: "x {tmp}\apache-tomcat-9.0.0.M13-windows-x64.zip -o{app}\ * -r -aoa"; Flags: runhidden runascurrentuser; 
+0

あなたは{}のアプリに(=コピー)ダウンロードしたZIPを "インストール" しますか?どうして?とにかく、{tmp}の代わりに '{app}'に直接ダウンロードしてみてはどうでしょうか? –

+0

また、あなたは与えられた答えを受け入れることなく、新しい質問をし続けます。 [あなたのアカウントを変更する](http://stackoverflow.com/users/6325605/roger-federer)それを隠すことはありません! –

+0

私はその答えを今日後で受け入れます。 –

答えて

1
  • 偽のライセンスファイルを設定することにより、 "ライセンス" ページを有効にします。
  • ウェルカムページの直後にZIPファイルをダウンロードします(明示的に有効にする必要があります)。
  • ダウンロードページの「次へ」ボタンハンドラで、ZIPファイルを抽出し、ライセンスをロードします(これをコード化する必要があります。[Run]セクションは使用できません)。

コードはShell.Applicationを使用How to get Inno Setup to unzip a file it installedからUnZip関数を使用します。外部の解凍アプリケーションを好む場合は、UnZipが呼び出されたのと同じ場所にExec関数を使用して実行することができます。

#include "idp.iss" 

[Setup] 
DisableWelcomePage=no 
LicenseFile=fake.txt 

const 
    TomcatVersion = '9.0.0.M13'; 

var 
    TomcatZipPath: string; 

procedure InitializeWizard(); 
var 
    TomcatZipUrl: string; 
    TomcatZipFile: string; 
begin 
    TomcatZipFile := 'apache-tomcat-' + TomcatVersion + '-windows-x64.zip'; 
    TomcatZipPath := ExpandConstant('{tmp}\' + TomcatZipFile); 
    TomcatZipUrl := 
    'http://www-us.apache.org/dist/tomcat/tomcat-9/v' + TomcatVersion + 
    '/bin/' + TomcatZipFile; 
    idpAddFile(TomcatZipUrl, TomcatZipPath); 
    idpDownloadAfter(wpWelcome); 
end; 

function NextButtonClick(CurPageID: Integer): Boolean; 
begin 
    if CurPageID = IDPForm.Page.ID then 
    begin 
    idpShowDetails(False); 
    IDPForm.DetailsButton.Visible := False; 

    WizardForm.NextButton.Enabled := False; 
    WizardForm.BackButton.Visible := False; 
    WizardForm.CancelButton.Enabled := False; 
    try 
     IDPForm.TotalProgressLabel.Caption := 'Extracting files...'; 
     UnZip(TomcatZipPath, ExpandConstant('{tmp}')); 
    finally 
     WizardForm.BackButton.Visible := True; 
     WizardForm.NextButton.Enabled := True; 
     WizardForm.CancelButton.Enabled := True; 
    end; 

    WizardForm.LicenseMemo.Lines.LoadFromFile(
     ExpandConstant('{tmp}\apache-tomcat-9.0.0.M13\LICENSE')); 
    end; 

    Result := True; 
end; 

Downloading

Extracting

License

+0

私は同意しますが、これを次のボタンイベントの内部にあるそのJavaインストールとどのように統合するのですか? –

+0

この画面が表示されるまでJavaインストールが必要です。私はthwmを一緒にパットしようとしましたが、コンパイルされましたが、最初の次のボタンを押すとエラーが発生しました –

+0

これは新しい質問です。それに頼みなさい。新しいコードを表示してください。 –

関連する問題