2014-02-05 10 views
7

Ich muss die automatische Installation für meine Anwendung ohne nächsten, nächsten Installationsassistenten starten. Bitte helfen Sie mir.Wie macht man die stille Installation mit InnoSetup?

enter image description here

+4

Mit dem [ '/SILENT'](http://jrsoftware.org/ishelp/topic_setupcmdline.htm#SILENT) Befehlszeilenparameter. – TLama

+0

Ich bin neu in Inno-Skript.Bitte senden Sie das Skript für die automatische Installation – satheesh

+0

Es gibt kein Skript dafür. Silent-Modus ist nur die Art, wie das Setup ausgeführt wird. Sie haben nur ein Setup, das Sie mit '/ SILENT' Parameter ausführen können. In Ihrem Skript können Sie abhängig davon, ob das Setup im unbeaufsichtigten Modus ausgeführt wird, bestimmte Dinge tun. Aber das hängt von deinem Skript ab. – TLama

Antwort

13

Richtige Weg, um das Setup im Silent-Modus laufen soll, und immer mit /SILENT Kommandozeilenparameter werden ausgeführt wird. Zum Beispiel so:

setup.exe /SILENT 

Nachdem wir Ihre Anforderung in den Kommentaren geklärt Ich sehe, dass Sie tatsächlich ein Setup aufbauen wollen, die im Silent-Modus ohne die genannten Befehlszeilenparameter ausgeführt wird. Derzeit gibt es keine integrierte Möglichkeit, dem Compiler mitzuteilen, dass Sie eine unbeaufsichtigte Installation erstellen möchten, daher müssen wir dies umgehen, indem Sie das Setup mit dem Befehlszeilenparameter /SILENT erneut ausführen, wenn das Setup initialisiert wird.

Das folgende Skript zeigt diese Abhilfe:

[Setup] 
AppName=My Program 
AppVersion=1.5 
DefaultDirName={pf}\My Program 

[Code] 
#ifdef UNICODE 
    #define AW "W" 
#else 
    #define AW "A" 
#endif 
type 
    HINSTANCE = THandle; 

function ShellExecute(hwnd: HWND; lpOperation: string; lpFile: string; 
    lpParameters: string; lpDirectory: string; nShowCmd: Integer): HINSTANCE; 
    external 'ShellExecute{#AW}@shell32.dll stdcall'; 

function InitializeSetup: Boolean; 
begin 
    // if this instance of the setup is not silent which is by running 
    // setup binary without /SILENT parameter, stop the initialization 
    Result := WizardSilent; 
    // if this instance is not silent, then... 
    if not Result then 
    begin 
    // re-run the setup with /SILENT parameter; because executing of 
    // the setup loader is not possible with ShellExec function, we 
    // need to use a WinAPI workaround 
    if ShellExecute(0, '', ExpandConstant('{srcexe}'), '/SILENT', '', 
     SW_SHOW) <= 32 
    then 
     // if re-running this setup to silent mode failed, let's allow 
     // this non-silent setup to be run 
     Result := True; 
    end; 
end; 
+0

Natürlich, wenn Sie tatsächlich das oben genannte tun, werden Sie sofort als Malware gebrandmarkt. Es gibt niemals einen guten Grund für einen Installateur, dies zu tun. Es liegt in der Verantwortung desjenigen, der den Installer ausführt, explizit stilles Verhalten anzufordern, mit der Annahme, dass es nicht erwünscht ist, wenn es nicht angefordert wird. – Miral

+2

@ Miral, als Malware markiert ist genau das, was die Anforderung verdient. – TLama

+0

Ich bekomme einen Laufzeitfehler, während das obige Skript enthalten ist, der Fehler kann die Shell32-DLL nicht importieren. – satheesh

Verwandte Themen