2008-12-15 13 views
5

Ich erstelle ein Installationsprogramm für AC# Windows-Projekt mit VS 2008. Ich versuche eine benutzerdefinierte Aktion zu schreiben, die eine Einstellungsdatei aus der Quelle kopiert Verzeichnis der auf einem Dateiserver gespeicherten MSI-Datei (z. B. \ server \ fileshare \ myappinstaller \ mysetting.xml) in das Zielverzeichnis auf dem Computer, auf dem meine Anwendung installiert wurde (z. B. C: \ Programme \ Meine App).Ich benötige eine benutzerdefinierte MSI-Aktion, die eine Datei aus dem MSI-Quellverzeichnis kopiert

Die Einstellungsdatei kann nicht zum Installationsprogramm hinzugefügt werden, da sie Einstellungen enthält, die nur für den Kunden gelten, der die App installiert.

Hat jemand Code (vorzugsweise C# oder VB.NET) für eine solche benutzerdefinierte Aktion? Alternativ weiß jemand, wie der MSI-Quellspeicherort (z. B. \ Server \ Dateifreigabe \ MeinAppinstaller) in einer benutzerdefinierten Aktion abgerufen werden kann.

Vielen Dank

Antwort

2

ich Ihnen die XML-Datei in das Installationsprogramm als eine der Komponenten hinzufügen würde empfehlen, installiert werden. Das wäre der einfachste Weg und würde keine benutzerdefinierte Aktion erfordern.

WiX könnte eine Option für Sie sein. Sie können XML-Konfigurationsdateien während der Installation mit XmlConfig anpassen.

0

Normalerweise verwenden benutzerdefinierte Aktionen in WindowsInstaller etwas aus den Tabellen der MSI, um etwas in eine beliebige Tabelle der MSI zu schreiben.

Zusätzlich lehnt das WindowsInstaller-Team alle verwalteten Erweiterungen für die Installer ab, Gründe dafür finden sich überall im Netz.

Aber ich einige Zeit hatte vor eine Erweiterung create managed custom actions für WindowsInstallers herauszufinden, verwendbar mit WiX, die noch funktioniert, aber es gibt eine neuere Lösung oben auf dieser Arbeit, eine echte Erweiterung für WiX verwaltete benutzerdefinierte Aktionen zu ermöglichen, .

1

Ich mache eine ähnliche Sache, aber liefern Sie eine Standardkonfiguration in der MSI-Datei und verwenden Sie dann eine MST, um die benutzerdefinierte Konfigurationsdatei hinzuzufügen. Es ist viel zuverlässiger, da alles im Windows-Installer "nativ" ist und ich nur eine kleine benutzerdefinierte MST an jeden Kunden senden muss.

Weitere Informationen darüber, wie ich das tue Simplest solution to replace a tiny file inside an MSI?

zu können
5

gefunden über Ich habe diese

durch Zugabe gelöst

/InstallerPath = "[OriginalDatabase]"

zu die CustomActionData der benutzerdefinierten Aktion (in der Registerkarte Benutzerdefinierte Aktionen des Setup-Projekts) und Lesen des Werts mit diesem Code in der benutzerdefinierten Aktion:

Public Overrides Sub Commit(ByVal savedState As System.Collections.IDictionary) 
     MyBase.Commit(savedState) 

     Dim directoryOfMSI As String = IO.Path.GetDirectoryName(Context.Parameters("InstallerPath")) 

     'Do your work here 
     '... 

    End Sub 

Ciao! Stefan

Verwandte Themen