MrmCreateResourceIndexerFromPreviousSchemaFile-Funktion

Erstellt einen Ressourcenindexer, der PRI-Dateien erstellen kann, die mit vorhandenen PRI-Dateien kompatibel sind. Diese Funktion ist nur in relativ begrenzten Szenarien erforderlich; weitere Informationen finden Sie in den Hinweisen .

COM muss initialisiert werden (z. B. durch Aufrufen von CoInitializeEx), bevor diese Funktion verwendet wird.

Syntax

HRESULT HRESULT MrmCreateResourceIndexerFromPreviousSchemaFile(
  _In_     PCWSTR                   projectRoot,
  _In_     MrmPlatformVersion       platformVersion,
  _In_opt_ PCWSTR                   defaultQualifiers,
  _In_     PCWSTR                   schemaFile,
  _Inout_  MrmResourceIndexerHandle *indexer
);

Parameter

projectRoot [in]

Typ: PCWSTR-

Das Stammverzeichnis, aus dem einige Dateipfade berechnet werden. In der Regel ist dies das Stammverzeichnis Ihres Quellprojekts, kann sich jedoch unterscheiden. Weitere Informationen finden Sie unter "Dateiressourcen" in MRM .

platformVersion [in]

Typ: MrmPlatformVersion

Die Plattformversion (targetOsVersion), die für die generierte Konfigurationsdatei verwendet werden soll. Die meisten Anrufer sollten nur MrmPlatformVersion_Windows10_0_0_5

defaultQualifiers [in, optional]

Typ: PCWSTR-

Eine Liste der Standardressourcenqualifizierer. Beispiel: "language-en-US_scale-100". Weitere Informationen zu Qualifizierern finden Sie unter Qualifizierer in MRM.

schemaFile [in]

Typ: PCWSTR-

Der Pfad zu einer vorhandenen PRI-Datei, deren Schema Sie abgleichen müssen, oder der Pfad zu einem XML-Speicherabbild, das das Schema der PRI-Datei enthält, die übereinstimmen soll. Informationen zum Erstellen eines XML-Dumps finden Sie unter MrmDumpPriFile .

Indexer [in, out]

Typ: MrmResourceIndexerHandle*

Ein Zeiger auf ein Ressourcenindexerhandle. Bei erfolgreicher Rückgabe enthält dies ein Handle für einen Ressourcenindexer. Sie müssen den Indexer nach der Verwendung über MrmDestroyIndexerAndMessages freigeben.

Zurückgegebener Wert

Typ: HRESULT-

S_OK, wenn die Funktion erfolgreich war, andernfalls ein anderer Wert. Verwenden Sie die makros "ERFOLGREICH" oder "FAILED " (definiert in winerror.h), um Erfolg oder Fehler zu ermitteln.

Bemerkungen

Diese Funktion entspricht MrmCreateResourceIndexer , mit der Ausnahme, dass der Indexer PRI-Dateien erstellt, die garantiert alle Ressourcennamen und Indizes der bereitgestellten schemaFile enthalten, zusätzlich zu allen neuen Ressourcen, die dem Indexer hinzugefügt werden. Dadurch wird sichergestellt, dass die neue PRI-Datei mit der ursprünglichen SchemaDatei "schemakompatibel" ist, auch wenn einige Ressourcen weggelassen wurden.

Für die meisten gängigen Szenarien ist diese Funktion nicht erforderlich. Wenn eine der folgenden Bedingungen zutrifft, müssen Sie sich keine Gedanken über das Erstellen schemakompatibler PRI-Dateien machen:

  • Sie verwenden eine einzelne, eigenständige PRI-Datei (die einzige unterstützte Option für entpackte Apps); Oder
  • Sie erstellen immer ihre PRIs für das Ressourcenpaket neu, wenn Sie Ihre Haupt-PRI neu erstellen.

Diese Funktion ist nur in einem relativ begrenzten Szenario erforderlich, nämlich:

  1. Sie verfügen über eine PRI-Hauptdatei und eine oder mehrere PRI-Dateien des Ressourcenpakets. Und
  2. Sie erstellen die PRI-Hauptdatei (aber nicht die PRI-Dateien des Ressourcenpakets) neu. Und
  3. Sie entfernen (oder sind möglicherweise) eine oder mehrere Ressourcen aus der PRI-Hauptdatei.You are (or be) removing one or more resources from the main PRI file.

In diesem Fall wird durch Festlegen des SchemaFile-Verweises auf die ursprüngliche PRI-Hauptdatei sichergestellt, dass die neue PRI-Hauptdatei mit den vorhandenen Ressourcenpaketen kompatibel ist, indem sichergestellt wird, dass Platzhalterindexwerte für die entfernten Ressourcen vorhanden sind.

Hinweis: Die neue PRI-Datei enthält alle Ressourcennamen (und Indizes) aus der ursprünglichen Datei, enthält jedoch nur Werte für die Ressourcen, die dem Indexer explizit hinzugefügt wurden. Die neue Datei erbt ( kopieren) nicht die Werte aus der ursprünglichen PRI-Datei.

Beispiel

Gehen Sie davon aus, dass die PRI-Datei "original.pri" drei Ressourcen für Englisch enthält:

Name Index Wert
ms-resource:///strings/test 0 "TestValue"
ms-resource:///strings/save 1 "Speichern"
ms-resource:///strings/delete 2 "Löschen"

Betrachten Sie nun den folgenden Codeausschnitt (fehlerüberprüfung nicht angegeben):

// Create an indexer with the existing schema
MrmResourceIndexerHandle indexer{};
MrmCreateResourceIndexerFromPreviousSchemaFile(L"C:\\MyProject", MrmPlatformVersion_Windows10_0_0_5, L"language-en", L"original.pri", &indexer);

// Add values for "save" and "delete".
// Note that there is no "test" resource added, since we don't need it anymore.
MrmIndexString(indexer, L"ms-resource:///strings/save", L"Save", L"language-en");
MrmIndexString(indexer, L"ms-resource:///strings/delete", L"Delete", L"language-en");

// Save the file
MrmCreateResourceFile(indexer, MrmPackagingModeStandaloneFile, MrmPackagingOptionsNone, L"C:\\");

Die neue Ressourcendatei enthält Folgendes für Englisch:

Name Index Wert
ms-resource:///strings/test 0 <Keine>
ms-resource:///strings/save 1 "Speichern"
ms-resource:///strings/delete 2 "Löschen"

Dadurch wird sichergestellt, dass die Ressourcenindizes für save und delete bleiben gleich (1 bzw. 2), sodass Ressourcenpakete mit lokalisierten Versionen von "Speichern" und "Löschen" übereinstimmen. Beachten Sie, dass, wenn der Anwendungscode weiterhin versucht hat, die test Ressource zu laden, zur Laufzeit (mindestens in Englisch) fehlschlagen würde, da keine Kandidaten definiert sind.

Um zu veranschaulichen, warum dies wichtig ist, sehen wir uns an, was passiert, wenn die neue PRI-Datei nicht mit dem Basisschema erstellt wurde. In diesem Fall würde die neue PRI-Datei Folgendes enthalten:

Name Index Wert
ms-resource:///strings/save 0 "Speichern"
ms-resource:///strings/delete 1 "Löschen"

Nun würden Nachschlagevorgänge für delete (Index 1) die richtige Zeichenfolge "Delete" in Englisch abrufen, aber in anderen Sprachen würde sie die lokalisierte Version von "Speichern" abrufen (da Index 1 der Index für die save Ressource ist). Dies würde dazu führen, dass Benutzern die Benutzeroberfläche mit der Bezeichnung "Speichern" (in ihrer lokalen Sprache) angezeigt wird, die tatsächlich einen Löschvorgang durchgeführt hat – ein schwerwiegender Fehler.

Anforderungen

Anforderung Wert
Mindestens unterstützter Client
Windows 10, Version 1803 [nur Desktop-Apps]
Unterstützter Server (Mindestversion)
Windows Server [Nur Desktop-Apps]
Header
MrmResourceIndexer.h
Bibliothek
Mrmsupport.lib
DLL
Mrmsupport.dll

Siehe auch

MrmCreateResourceIndexer

MrmCreateResourceIndexerFromPreviousPriData

MrmCreateResourceIndexerFromPreviousPriFile

MrmCreateResourceIndexerFromPreviousSchemaData

Paketressourcenindizierungs-APIs (PRI) und benutzerdefinierte Buildsysteme