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.
Frage zu FeatureFilterLanguage
Started by
scribere
, Jan 21 2005 16:20
7 replies to this topic
Posted 21 January 2005 - 16:20
Hi
kann mir mal jemand helfen??
Ich möchte mit
FeatureFilterLanguage(MEDIA, ISLANG_ALL, TRUE);
switch (SELECTED_LANGUAGE)
case ISLANG_GERMAN: FeatureFilterLanguage(MEDIA, ISLANG_GERMAN, FALSE);
<Code>;
case ISLANG_ENGLISH: FeatureFilterLanguage(MEDIA, ISLANG_ENGLISH, FALSE);
<Code>;
entsprechend der ausgewählten Spache, die Filterung beeinflussen.
Nun liefert SELECTED_LANGUAGE die ausgewählte Sprache z.B. deutsch mit der Sprach id 1031.
ISLANG_GERMAN repräsentiert aber den Wert "7", da 7 nicht 1031 ist...
In Installshield Prof 2000 ( 6.2 ) funktioniert das aber und in Installshield X ist das Beispiel auch so noch angegeben.
Was ist hier falsch?
Gruß Thorsten
kann mir mal jemand helfen??
Ich möchte mit
FeatureFilterLanguage(MEDIA, ISLANG_ALL, TRUE);
switch (SELECTED_LANGUAGE)
case ISLANG_GERMAN: FeatureFilterLanguage(MEDIA, ISLANG_GERMAN, FALSE);
<Code>;
case ISLANG_ENGLISH: FeatureFilterLanguage(MEDIA, ISLANG_ENGLISH, FALSE);
<Code>;
entsprechend der ausgewählten Spache, die Filterung beeinflussen.
Nun liefert SELECTED_LANGUAGE die ausgewählte Sprache z.B. deutsch mit der Sprach id 1031.
ISLANG_GERMAN repräsentiert aber den Wert "7", da 7 nicht 1031 ist...
In Installshield Prof 2000 ( 6.2 ) funktioniert das aber und in Installshield X ist das Beispiel auch so noch angegeben.
Was ist hier falsch?
Gruß Thorsten
Posted 22 January 2005 - 12:36
Das liegt daran, dass SELECTED_LANGUAGE auch den Sub-Code der Sprache enthält:
1031 = 0x0407 für Deutsch (Deutschland)
Dich interessiert aber nur der Hauptcode 0x07 für Deutsch. Du könntest also die case Konstanten ändern:
case 1031: ...
Oder probier mal folgendes:
switch ( SELECTED_LANGUAGE & 255 ) // Sub-Code ausblenden
1031 = 0x0407 für Deutsch (Deutschland)
Dich interessiert aber nur der Hauptcode 0x07 für Deutsch. Du könntest also die case Konstanten ändern:
case 1031: ...
Oder probier mal folgendes:
switch ( SELECTED_LANGUAGE & 255 ) // Sub-Code ausblenden
Stefan Krüger
InstallSite.org twitter facebook
Posted 24 January 2005 - 13:28
Super ...
danke für den TIP.
& 255 angehängt und funktioniert.
Nun habe ich nur noch das Problem, dass bei der Verwendung von SdFeatureTree die Datei bzw. der benötigte Plattenplatz falsch berechnet wird.
Ich habe ein Feature "Manuals" und hierin 2 Komponenten 1x dt 1x en.
Grösse jeweils 20 MB. Wenn ich die Handbücher deselektiere werden abe 40 MB abgezogen.
Gibt's da auch einen Trick?
Gruß Thorsten
danke für den TIP.
& 255 angehängt und funktioniert.
Nun habe ich nur noch das Problem, dass bei der Verwendung von SdFeatureTree die Datei bzw. der benötigte Plattenplatz falsch berechnet wird.
Ich habe ein Feature "Manuals" und hierin 2 Komponenten 1x dt 1x en.
Grösse jeweils 20 MB. Wenn ich die Handbücher deselektiere werden abe 40 MB abgezogen.
Gibt's da auch einen Trick?
Gruß Thorsten
Posted 24 January 2005 - 14:19
Ich verstehe das Problem nicht. Du hast zwei Handbücher zu je 20 MB und wenn du sie de-selecktierst werden 40 MB weniger benötigt? Das ist doch richtig, oder?
Stefan Krüger
InstallSite.org twitter facebook
Posted 24 January 2005 - 16:51
Na eben nicht richtig, aber ich gebe zu etwas bescheiden erklärt.
Na dann wolln wa mal nochmal.
Also ich habe in Feature namens Manuals. Dieses Feature besitzt 2 Komponenten.
Die eine Komponente wird installiert wenn der Benutzer die Installationssprache deutsch wählt , die andere wenn er englisch wählt. ( sind PDF Dateien )
Nun arbeitet IS ja schon richtig, d.h. wenn ich die Handbücher in englisch haben möchte, so wähle ich im Sprachendialog englisch aus und IS filtert die deutschen heraus, installiert werden nur die englischen.
.
Es werden also, egal wie, immer nur 20 MB installiert ( eine Komponente eben )
In der Anzeige von SdFeaturetree wird der benötigt Platz aber mit 40 MB angegeben, d.h. deutsch und englisch zusammen. Richtigerweise sollte aber ja nur der Platzbedarf der tatsächlich benötigten Komponenten angezeigt werden.
Wähle ich das Feature Handbücher ab, so wird der Platzbedarf um 40 MB nach unten korrigiert, halt wieder dt und en zusammen.
Das ist aber auch falsch da ich ja nur z.B. die englischen installiert hätte also 20 MB und dieses nun nicht möchte, also 20 MB weniger.
mfg Thorsten
Na dann wolln wa mal nochmal.
Also ich habe in Feature namens Manuals. Dieses Feature besitzt 2 Komponenten.
Die eine Komponente wird installiert wenn der Benutzer die Installationssprache deutsch wählt , die andere wenn er englisch wählt. ( sind PDF Dateien )
Nun arbeitet IS ja schon richtig, d.h. wenn ich die Handbücher in englisch haben möchte, so wähle ich im Sprachendialog englisch aus und IS filtert die deutschen heraus, installiert werden nur die englischen.
.
Es werden also, egal wie, immer nur 20 MB installiert ( eine Komponente eben )
In der Anzeige von SdFeaturetree wird der benötigt Platz aber mit 40 MB angegeben, d.h. deutsch und englisch zusammen. Richtigerweise sollte aber ja nur der Platzbedarf der tatsächlich benötigten Komponenten angezeigt werden.
Wähle ich das Feature Handbücher ab, so wird der Platzbedarf um 40 MB nach unten korrigiert, halt wieder dt und en zusammen.
Das ist aber auch falsch da ich ja nur z.B. die englischen installiert hätte also 20 MB und dieses nun nicht möchte, also 20 MB weniger.
mfg Thorsten
Posted 25 January 2005 - 15:01
Filterst du bevor du den Feature Dialog anzeigst, oder danach?
Ich bin auch nicht sicher, ob FeatureFilterLanguage bei MSI Projekten wirklich zuverlässig funktioniert.
Ich bin auch nicht sicher, ob FeatureFilterLanguage bei MSI Projekten wirklich zuverlässig funktioniert.
Stefan Krüger
InstallSite.org twitter facebook
Posted 25 January 2005 - 16:59
Wird bei OnBegin ausgeführt, also vor SdFeatureTree.
So wie es aussieht funktioniert da so einiges nicht. In der Hilfe gibt es folgendes Beispiel:
function OnBegin()
string svDir, svFeature, svFeatureInfo;
LIST listFeatures, listFeatureInfo;
number nListGetString, nvRequiredSpace;
begin
svDir = TARGETDIR;
SdFeatureTree ("", "", svDir, "", 1);
listFeatures = ListCreate ( STRINGLIST );
FeatureListItems ( MEDIA, "", listFeatures );
nListGetString = ListGetFirstString ( listFeatures, svFeature );
listFeatureInfo = ListCreate ( STRINGLIST );
while nListGetString=0
FeatureGetCost ( MEDIA, svFeature, svDir, nvRequiredSpace );
Sprintf ( svFeatureInfo, "Gewähltes Feature %s hat eine Größe von %ld KB.\n",
svFeature, nvRequiredSpace );
ListAddString ( listFeatureInfo, svFeatureInfo, AFTER );
nListGetString = ListGetNextString ( listFeatures, svFeature );
endwhile;
ListDestroy ( listFeatures );
SdShowInfoList ( "", "", listFeatureInfo );
ListDestroy ( listFeatureInfo );
end;
Im Dialog wird falsch gerechnet und FeatureGetCost zeigt immer 0 KB an
Gruß Thorsten
So wie es aussieht funktioniert da so einiges nicht. In der Hilfe gibt es folgendes Beispiel:
function OnBegin()
string svDir, svFeature, svFeatureInfo;
LIST listFeatures, listFeatureInfo;
number nListGetString, nvRequiredSpace;
begin
svDir = TARGETDIR;
SdFeatureTree ("", "", svDir, "", 1);
listFeatures = ListCreate ( STRINGLIST );
FeatureListItems ( MEDIA, "", listFeatures );
nListGetString = ListGetFirstString ( listFeatures, svFeature );
listFeatureInfo = ListCreate ( STRINGLIST );
while nListGetString=0
FeatureGetCost ( MEDIA, svFeature, svDir, nvRequiredSpace );
Sprintf ( svFeatureInfo, "Gewähltes Feature %s hat eine Größe von %ld KB.\n",
svFeature, nvRequiredSpace );
ListAddString ( listFeatureInfo, svFeatureInfo, AFTER );
nListGetString = ListGetNextString ( listFeatures, svFeature );
endwhile;
ListDestroy ( listFeatures );
SdShowInfoList ( "", "", listFeatureInfo );
ListDestroy ( listFeatureInfo );
end;
Im Dialog wird falsch gerechnet und FeatureGetCost zeigt immer 0 KB an
Gruß Thorsten
Posted 26 January 2005 - 09:29
Im allgemeinen rate ich davon ab, den Projekttyp "InstallScript MSI" zu verwenden. Entweder Basic MSI oder reines InstallScript, aber kein Mix aus beiden.
Stefan Krüger
InstallSite.org twitter facebook