Mal etwas zu: Q106070: HOWTO: Launch ReadMe from SetupCompleteSuccess
Ich habe damit jetzt kämpfen müssen. Meine Erfahrung damit:
Angenommen es soll ReleaseNotes.htm aus [INSTALLDIR]Doc\\ mit dem Standard Browser angezeigt werden
Eigenschaft LAUNCHREADME dient zum setzen der CheckBox
Eigenschaft SHOWLAUNCHREADME dient zum anzeigen / verbergen der CheckBox
Eigenschaft READMEFILETOLAUNCHATEND enthält wohl die Daten
Daten: Pfad+StandardBrowser Pfad+ReleaseNotes.htm
Zunächst erst einmal den Standard Browser ermitteln.
mit
prototype NUMBER Shell32.FindExecutableW(LPWSTR, LPWSTR, BYREF WSTRING);
...
nResult = Shell32.FindExecutableW(psHTMFile, psPath, sBrowser);
if (nResult > 32) then
sMsg = "Find browser: " + sBrowser;
endif;
Beachten muß man hierbei, daß man eine existierende ReleaseNotes.htm übergibt.
Wenn man im Vorfeld alles abklären will, dann geht halt [INSTALLDIR]Doc\\ReleaseNotes.htm nicht,
weil noch nichts installiert ist.
Aber die ReleaseNotes.htm sollte schon temporär vorliegen, entweder unter "SourceDir" oder "SETUPEXEDIR".
Hat man eine existierende Pfad+ReleaseNotes.htm bekommt man Pfad+StandardBrowser.
Damit kann man nun die Eigenschaft READMEFILETOLAUNCHATEND setzen:
READMEFILETOLAUNCHATEND = Pfad+StandardBrowser Leerzeichen [INSTALLDIR]Doc\\ReleaseNotes.htm
Dann benötigt man eine Custom Action CA_Show_ReleaseNotes; hier habe ich die Eigenschaften gesetzt:
Working Directory: Doc-Verz.
Filename&Command line: [READMEFILETOLAUNCHATEND]
Return Processing: Asynchronous (No wait for completion)
In-Script Execution: Immediate Execution
Execution Scheduling: Always execute
Auf gut deutsch die CA ist vom Type 226.
Jetzt muß man die CA noch inden SetupCompleteSuccess-Dialog einbauen. Dies sieht bei mir so aus:
OK-Button/DoAction=CA_Show_ReleaseNotes/Condition=LAUNCHREADME=1 AND READMEFILETOLAUNCHATEND<>"" AND NOT ISENABLEDWUSFINISHDIALOG AND NOT Installed
Vorteil der Aufbereitung vorher ist, daß man eine fertige Eigenschaft hat und die Release Notes ohne Ablauf der Eieruhr angezeigt werden.
Bei LaunchApplication und ShellExecute und Co. muß, wenn man es mit IS-Script macht, erst die IS-Engine geladen werden.
Gruß
André
This is a ready-only archive of the InstallSite Forum. You cannot post any new content here. / Dies ist ein Archiv des InstallSite Forums. Hier können keine neuen Beiträge veröffentlicht werden.
Q106070: Launch ReadMe from SetupCompleteSuccess
Started by
ANo
, Nov 16 2010 15:56
4 replies to this topic
Posted 17 November 2010 - 16:42
Eine Alternative zum Auslesen des Standard-Browsers wäre es, shelexec.exe mitzuliefern aud aufzurufen.
Stefan Krüger
InstallSite.org twitter facebook
Posted 19 November 2010 - 08:44
Hallo Stefan, danke für die Info.
Nur ist es gerade auch ein Punkt von anderen, was wir vermeiden wollten - die Shelexec.exe einzubinden.
Ich denke wenn man so etwas macht sollte die binär eingebunden werden - aus Sicherheitsgründen.
Jedenfalls schmeckt uns diese exe-Datei nicht.
Eine Frage hätte ich, wo kommt die Datei eigentlich her?
Von http://www.naughter.com/shelexec.html?
Ich bekomme nur mit, daß diese Freeware ist und auf die API ShellExecute zugreift.
Gruß André
Nur ist es gerade auch ein Punkt von anderen, was wir vermeiden wollten - die Shelexec.exe einzubinden.
Ich denke wenn man so etwas macht sollte die binär eingebunden werden - aus Sicherheitsgründen.
Jedenfalls schmeckt uns diese exe-Datei nicht.
Eine Frage hätte ich, wo kommt die Datei eigentlich her?
Von http://www.naughter.com/shelexec.html?
Ich bekomme nur mit, daß diese Freeware ist und auf die API ShellExecute zugreift.
Gruß André
Posted 19 November 2010 - 08:49
Hier noch ein Tipp, wie man den Link formatieren sollte/kann - wegen der Leerzeichen und so.
prototype GEN_Format_HTMLLink( STRING, BYREF STRING );
////////////////////////////////////////////////////////////////////////////////
// Function: GEN_Format_HTMLLink
// Purpose:
// C:\Program Files (x86)\Company\Product 8.8\Doc\Release Notes deu.htm
//--> file:///C:/Program%20Files%20(x86)/Company/Product%208.8/Doc/Release%20Notes%20deu.htm
////////////////////////////////////////////////////////////////////////////////
function GEN_Format_HTMLLink( sFile, sFileFormatted )
begin
// Replace space with %20.
StrReplace ( sFile, " ", "%20", 0 );
// Replace \ with /.
StrReplace ( sFile, "\\", "/", 0 );
sFileFormatted = "file:///" + sFile;
return 0;
end;
Gruß
André
prototype GEN_Format_HTMLLink( STRING, BYREF STRING );
////////////////////////////////////////////////////////////////////////////////
// Function: GEN_Format_HTMLLink
// Purpose:
// C:\Program Files (x86)\Company\Product 8.8\Doc\Release Notes deu.htm
//--> file:///C:/Program%20Files%20(x86)/Company/Product%208.8/Doc/Release%20Notes%20deu.htm
////////////////////////////////////////////////////////////////////////////////
function GEN_Format_HTMLLink( sFile, sFileFormatted )
begin
// Replace space with %20.
StrReplace ( sFile, " ", "%20", 0 );
// Replace \ with /.
StrReplace ( sFile, "\\", "/", 0 );
sFileFormatted = "file:///" + sFile;
return 0;
end;
Gruß
André
Posted 22 November 2010 - 10:30
Wo shelexec.exe ursprünglich her stammt weiß ich auch nicht. Sie geistert jedenfalls schon seit vielen Jahren durchs Netz. Notfalls kann man das ShellExecute Windows API auch selbst aufrufen, müsste mit InstallShield's Custom Action Typ "any DLL" gehen.
Stefan Krüger
InstallSite.org twitter facebook