1

Eine der Dateien in meiner Installation muss an einen Speicherort kopiert werden, auf den ein Registrierungsschlüssel/Wert-Paar auf dem Zielcomputer des Benutzers zeigt.Wie kann ich eine Datei in einem Verzeichnis installieren, auf das ein Registrierungsschlüssel/-wert in einem Installshield InstallScript-MSI-Projekt verweist?

Jetzt habe ich eine Art kludgy-Lösung, wo ich die Dateien in der Ansicht Komponenten auf [TempFolder] kopieren und dann einige benutzerdefinierte InstallScript-Code in meiner OnFirstUIBefore() -Funktion, die den Wert aus der Registrierung ergreift , führt dann eine MSIGetProperty für [TempFolder] und schließlich eine CopyFile() von [TempFolder] in den Pfad aus, den wir zuvor aus der Registrierung abgerufen haben.

Dies funktioniert, ist aber ein bisschen umständlich. Ein Mitarbeiter sagt, dass er denkt, ich SOLLTE in der Lage sein, eine MSISetProperty für einen benutzerdefinierten Eigenschaftsnamen wie MY_RSRC_DIR zu tun und dann diese benutzerdefinierte Eigenschaft im Komponentenbereich irgendwie zu verwenden, um die Datei an den richtigen Ort zu kopieren.

Ich kann so weit wie das Ausführen der MSISetProperty in einer OnBegin() - Funktion, aber versuchen, diese Eigenschaft in die Komponenten-Ansicht zu verbinden ist etwas, das ich noch nicht arbeiten konnte.

Hat jemand das getan, und wenn ja, wie?

Antwort

1

In einem InstallScript-MSI-Projekt sollten Sie den MSI-Ansatz verwenden. Erstellen Sie einen Hilfsordner (z. B. fügen Sie ihn zur Ansicht "Dateien und Ordner" hinzu) und fügen Sie ihm Dateien hinzu. Stellen Sie sicher, dass Sie die Verzeichniseigenschaft (z. B. NEWFOLDER1; stellen Sie sicher, dass es sich um Großbuchstaben handelt) herausfinden. Wenn Sie möchten, können Sie die Verzeichnistabelle so bearbeiten, dass sie ein Kind von TARGETDIR ist, aber dies ist optional und kann dazu führen, dass Dateien unter [WindowsVolume] abgelegt werden, wenn die Registrierung fehlschlägt. Daher ist es wahrscheinlich am besten, sie als Kind von INSTALLDIR zu belassen .

Wenn Sie das Verzeichnis vor der Kalkulation finden (dh vor CostInitialize, was OnBegin wäre), können Sie die Eigenschaft (zB NEWFOLDER1) mit einer benutzerdefinierten Suche, SetProperty benutzerdefinierte Aktion (Typ 51) oder MsiSetProperty() festlegen . Wenn Sie nach der Kalkulation suchen müssen, müssen Sie entweder eine benutzerdefinierte SetDirectory-Aktion (Typ 35) oder MsiSetTargetPath() verwenden, da die Eigenschaft das Verzeichnis nicht mehr aktualisiert.

Auf diese Weise wird Windows Installer den Speicherort der Datei für Sie verfolgen und die Deinstallation sollte ordnungsgemäß funktionieren.

+0

Ich habe keine Ahnung, was Sie gerade gesagt haben. Ich bin ein Noob w.r.t Installshield. Kannst du mir mehr Details liefern ... Ich werde 1 pt geben :) – David