Jump to content


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.
Photo

Frage zu FeatureFilterLanguage


7 replies to this topic

scribere

scribere
  • Members
  • 9 posts

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

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

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


scribere

scribere
  • Members
  • 9 posts

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

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

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?

scribere

scribere
  • Members
  • 9 posts

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

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

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.

scribere

scribere
  • Members
  • 9 posts

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


Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

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.