Ini Datei bearbeiten im Clientabschnitt

Post Reply
IronStorm
Posts: 72
Joined: 19. Jun 2018, 08:19
Contact:

Ini Datei bearbeiten im Clientabschnitt

Post by IronStorm » 14. Aug 2018, 08:15

Hallo ich habe da nochmal eine Frage.
Ich habe eine Ini die ich gerne nach der Installation bearbeiten würde, sofern sie existiert.
Die Installation geschieht VOR der Anmeldung.
Gibt es eine Möglichkeit den Teil im Userteil abzufangen?
Also das er nach der Anmeldung prüft ob eine Ini da ist (liegt unter %appdata% vom jeweils angemeldeten User) und falls ja sie entsprechend bearbeitet?
Und ich möchte nicht das Sie Immer abgefrühstückt wird also habe ich Sie im [Product] Abschnitt rausgelassen.
Ist dies korrekt?

Code: Select all

[Product]
#Set:Product, DONTDELETE
#Reg:OnUninstallProduct, DELETE
#Reg:Product, DONTDELETE
;#Ini:Product,DONTDELETE, CLIENT
#Security:Product
#Set:Uninstall, DELETE
#Set:ChangeMSISourcelist, DONTDELETE

[InstallMSI]
AddMeter -1
Call MsiExec /I "%SRC%\Setup.msi" ARPNOMODIFY="1" ARPSYSTEMCOMPONENT="1" RUNAPPLICATION="0"   REBOOT=REALLYSUPPRESS ARPSYSTEMCOMPONENT=1 /qn /Li "%MSILogFile%"
If %ErrorLevel% == "3010" Then "RebootRequired" EndIf
If DoesRegKeyExist ("HKLM,SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\%UninstallKey%,UnInstallString") == "0" & DoesRegKeyExist ("HKLM,SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\%Uninstallkey%,UnInstallString") == "0" Then "AbortMSIInst" EndIf
Del "%MSILogFile%"
If DoesFileExist ("%appdata%\Folder\Settings.ini") == "1" THEN "Ini:Product" Else "Set:CopySettings" End If

[Ini:Product]
"%appdata%\Folder\Settings.ini", "UPDATE",, "AutoUpdate=0"
"%appdata%\Folder\Settings.ini", "UPDATE",, "InternetAccessDialog=false"
"%appdata%\Folder\Settings.ini", "UPDATE",, "SilentDownload=false"
"%appdata%\Folder\Settings.ini", "UPDATE",, "InternetAccessDialogAntwort=false"

[Set:CopySettings]
1:Settings.ini, %appdata%\Folder, CLIENT ALWAYS

MaMa82
Posts: 344
Joined: 10. Jun 2011, 13:56
Contact:

Re: Ini Datei bearbeiten im Clientabschnitt

Post by MaMa82 » 14. Aug 2018, 08:34

Hallo!

Rein logisch gesehen wird das Skript nicht zuverlässig funktionieren. :wink:

Der Benutzeranteil wird ja immer erst nach dem Systemanteil und der Anmeldung des Benutzers installiert.

Code: Select all

[Product]
#Set:Product, DONTDELETE
#Reg:OnUninstallProduct, DELETE
#Reg:Product, DONTDELETE
#Set:UserSettings, CLIENT
#Security:Product
#Set:Uninstall, DELETE
#Set:ChangeMSISourcelist, DONTDELETE

[InstallMSI]
AddMeter -1
Call MsiExec /I "%SRC%\Setup.msi" ARPNOMODIFY="1" ARPSYSTEMCOMPONENT="1" RUNAPPLICATION="0"   REBOOT=REALLYSUPPRESS ARPSYSTEMCOMPONENT=1 /qn /Li "%MSILogFile%"
If %ErrorLevel% == "3010" Then "RebootRequired" EndIf
If DoesRegKeyExist ("HKLM,SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\%UninstallKey%,UnInstallString") == "0" & DoesRegKeyExist ("HKLM,SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\%Uninstallkey%,UnInstallString") == "0" Then "AbortMSIInst" EndIf
Del "%MSILogFile%"

[Set:UserSettings]
If DoesFileExist ("%appdata%\Folder\Settings.ini") == "1" THEN "Ini:Product" Else "Set:CopySettings" EndIf

[Ini:Product]
"%appdata%\Folder\Settings.ini", "UPDATE",, "AutoUpdate=0"
"%appdata%\Folder\Settings.ini", "UPDATE",, "InternetAccessDialog=false"
"%appdata%\Folder\Settings.ini", "UPDATE",, "SilentDownload=false"
"%appdata%\Folder\Settings.ini", "UPDATE",, "InternetAccessDialogAntwort=false"

[Set:CopySettings]
1:Settings.ini, %appdata%\Folder, CLIENT USEFILENAME ALWAYS
Allerdings musst Du dann dafür sorgen, dass die INI ins %APP% Verzeichnis bei der ersten Ausführung des Pakets kopiert wird. Zum Beispiel im Installer-Abschnitt:
[Installer]
...
1:Settings.ini, , NORMAL, 0
Grüße MaMa82


PS: EDV steht nicht für "Elektronische Datenverarbeitung", sondern vielmehr für "ENDE DER VERNUNFT"! :roll:

IronStorm
Posts: 72
Joined: 19. Jun 2018, 08:19
Contact:

Re: Ini Datei bearbeiten im Clientabschnitt

Post by IronStorm » 14. Aug 2018, 09:09

MaMa82 wrote:Hallo!

Rein logisch gesehen wird das Skript nicht zuverlässig funktionieren. :wink:

Der Benutzeranteil wird ja immer erst nach dem Systemanteil und der Anmeldung des Benutzers installiert.

Code: Select all

[Product]
#Set:Product, DONTDELETE
#Reg:OnUninstallProduct, DELETE
#Reg:Product, DONTDELETE
#Set:UserSettings, CLIENT
#Security:Product
#Set:Uninstall, DELETE
#Set:ChangeMSISourcelist, DONTDELETE

[InstallMSI]
AddMeter -1
Call MsiExec /I "%SRC%\Setup.msi" ARPNOMODIFY="1" ARPSYSTEMCOMPONENT="1" RUNAPPLICATION="0"   REBOOT=REALLYSUPPRESS ARPSYSTEMCOMPONENT=1 /qn /Li "%MSILogFile%"
If %ErrorLevel% == "3010" Then "RebootRequired" EndIf
If DoesRegKeyExist ("HKLM,SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\%UninstallKey%,UnInstallString") == "0" & DoesRegKeyExist ("HKLM,SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\%Uninstallkey%,UnInstallString") == "0" Then "AbortMSIInst" EndIf
Del "%MSILogFile%"

[Set:UserSettings]
If DoesFileExist ("%appdata%\Folder\Settings.ini") == "1" THEN "Ini:Product" Else "Set:CopySettings" EndIf

[Ini:Product]
"%appdata%\Folder\Settings.ini", "UPDATE",, "AutoUpdate=0"
"%appdata%\Folder\Settings.ini", "UPDATE",, "InternetAccessDialog=false"
"%appdata%\Folder\Settings.ini", "UPDATE",, "SilentDownload=false"
"%appdata%\Folder\Settings.ini", "UPDATE",, "InternetAccessDialogAntwort=false"

[Set:CopySettings]
1:Settings.ini, %appdata%\Folder, CLIENT USEFILENAME ALWAYS
Allerdings musst Du dann dafür sorgen, dass die INI ins %APP% Verzeichnis bei der ersten Ausführung des Pakets kopiert wird. Zum Beispiel im Installer-Abschnitt:
[Installer]
...
1:Settings.ini, , NORMAL, 0

den letzten part versteh ich noch net.
warum muss ich dafür sorgen das die ini ins %app% verzeichnis bei der ersten ausführung des pakets kopiert wird?
er schaut doch nach der anmeldung mit der [Set:UserSettings] Sektion ob sie existiert und falls nicht kopiert er sie mit dem [Set:CopySettings] einmal dort hin?

p.s. was bedeutet der NORMAL,0 Parameter?
Ich habe gelesen in der Hilfe das da teilweise auch andere zahlen (z.B. 275968= oder sowas hinterstehen??
Last edited by IronStorm on 14. Aug 2018, 09:21, edited 1 time in total.

MaMa82
Posts: 344
Joined: 10. Jun 2011, 13:56
Contact:

Re: Ini Datei bearbeiten im Clientabschnitt

Post by MaMa82 » 14. Aug 2018, 09:17

Die Frage verstehe ich gerade nicht.

Gemäß Deines ursprünglichen Pakets wird geprüft, ob die INI um Userprofil vorhanden ist und wird im Bedarfsfall kopiert.
Das war ja auch schon in Deinem Paket vorbereitet.

Folgende Sektion wird ausschließlich im Benutzeranteil ausgeführt - dazu brauchst du aber den /AW Schalter beim Aufruf der Empirum Setup.exe. (des Empirum Pakets)
#Set:UserSettings, CLIENT
Grüße MaMa82


PS: EDV steht nicht für "Elektronische Datenverarbeitung", sondern vielmehr für "ENDE DER VERNUNFT"! :roll:

IronStorm
Posts: 72
Joined: 19. Jun 2018, 08:19
Contact:

Re: Ini Datei bearbeiten im Clientabschnitt

Post by IronStorm » 14. Aug 2018, 09:23

naja du hattest noch drunter geschrieben:
Allerdings musst Du dann dafür sorgen, dass die INI ins %APP% Verzeichnis bei der ersten Ausführung des Pakets kopiert wird. Zum Beispiel im Installer-Abschnitt:
[Installer]
...
1:Settings.ini, , NORMAL, 0
hatte nur nicht verstanden wieso ich die zeile noch im install abschnitt benötige.
oder war damit gemeint, dass ich in meinem ursprungspaket diese zeile benötige?
oben bei den command line options habe ich den /AW schalter schon drin.
[Product]
; ReplaceEnv <Variable>

#Set:Product, DONTDELETE
#Reg:OnUninstallProduct, DELETE
#Reg:Product, DONTDELETE
#Set:UserSettings, CLIENT
#Security:Product
#Set:Uninstall, DELETE
#Set:ChangeMSISourcelist, DONTDELETE

[InstallMSI]
AddMeter -1
Call MsiExec /I "%SRC%\ElsterFormularKomplett.msi" ARPNOMODIFY="1" ARPSYSTEMCOMPONENT="1" RUNAPPLICATION="0" REBOOT=REALLYSUPPRESS ARPSYSTEMCOMPONENT=1 /qn /Li "%MSILogFile%"
If %ErrorLevel% == "3010" Then "RebootRequired" EndIf
If DoesRegKeyExist ("HKLM,SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{1E78D7AC-9C74-4644-8DDD-4173D10CF4F4},UnInstallString") == "0" & DoesRegKeyExist ("HKLM,SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{1E78D7AC-9C74-4644-8DDD-4173D10CF4F4},UnInstallString") == "0" Then "AbortMSIInst" EndIf
Del "%MSILogFile%"

[Set:UserSettings]
If DoesFileExist ("%appdata%\Folder\Settings.ini") == "1" THEN "Ini:Product" Else "Set:CopySettings" End If

[Ini:Product]
"%appdata%\Folder\Settings.ini", "UPDATE",, "AutoUpdate=0"
"%appdata%\Folder\Settings.ini", "UPDATE",, "InternetAccessDialog=false"
"%appdata%\Folder\Settings.ini", "UPDATE",, "SilentDownload=false"
"%appdata%\Folder\Settings.ini", "UPDATE",, "InternetAccessDialogAntwort=false"

[Set:CopySettings]
1:pica.ini, %appdata%\elsterformular\pica\ini, CLIENT USEFILENAME ALWAYS
so müsste es dann ja klappen oder?

p.s. was bedeutet der NORMAL,0 Parameter?
Ich habe gelesen in der Hilfe das da teilweise auch andere zahlen (z.B. 275968) oder sowas hinterstehen??

MaMa82
Posts: 344
Joined: 10. Jun 2011, 13:56
Contact:

Re: Ini Datei bearbeiten im Clientabschnitt

Post by MaMa82 » 14. Aug 2018, 09:30

Ah daher... :)

Ganz einfach - beim Ausführen des Nutzeranteils wird standardgemäß die Setup.inf im %APP%\%SetupInfDir% Verzeichnis verwendet.
Und da der interpreterinterne Kopierbefehl 1: immer von dort relativ eine Verzeichnisebene nach oben geht (=%SRC%) muss die INI im %APP% liegen. Ansonsten bekommst Du spätestens bei der Anmeldung des 2. Benutzers den Fehler, dass die Settings.ini nicht gefunden werden kann.

Zur Frage der Flags und der Zahl 0 - bitte wirf einen Blick in die Hilfe des Package Editors (Kopieroptionen bzw. Flags).
Hinweis:
1: {Quelle}, {Ziel}, {Flags}, {zu vergleichende Größe der Datei}
Grob gesagt - bei null wird die Datei 'immer' kopiert/überschrieben, egal ob diese vorhanden ist.
Grüße MaMa82


PS: EDV steht nicht für "Elektronische Datenverarbeitung", sondern vielmehr für "ENDE DER VERNUNFT"! :roll:

IronStorm
Posts: 72
Joined: 19. Jun 2018, 08:19
Contact:

Re: Ini Datei bearbeiten im Clientabschnitt

Post by IronStorm » 14. Aug 2018, 11:17

Ah jetzt habe ich verstanden :)
Da das Paket ja nicht ewig im %SRC% bleibt würde nach einiger Zeit ein user die ini nicht erhalten, da sie nicht mehr im %src% ist.
das heißt für mich ich kopiere mir die ini nach C:\Programdata\$Matrix42Scripts$\Paketname\Install paralell zur Setup.inf die ja auf dem Rechner verbleibt.

entschuldige das ich den Pfad mit angegeben habe, mit den Variablen hab ich es noch nicht so bzw weiß noch nicht ganz wohin welche verweisen.

MaMa82
Posts: 344
Joined: 10. Jun 2011, 13:56
Contact:

Re: Ini Datei bearbeiten im Clientabschnitt

Post by MaMa82 » 14. Aug 2018, 11:27

Kein Thema!

Wenn Du die ini parallel zur Setup.inf des Pakets ablegst, solltest Du den Kopierbefehl ändern:

Code: Select all

[Set:CopySettings]
1:%SetupInfDir%\pica.ini, %appdata%\elsterformular\pica\ini, CLIENT USEFILENAME ALWAYS
Zudem würde ich die ini dann auch im Paket ins Install-Verzeichnis legen und die Kopierbefehle anpassen.
Sonst ist die Fehleranfälligkeit gegeben.

Code: Select all

[Installer]
...
1:%SetupInfDir%\Settings.ini, , NORMAL, 0
(SetupInfDir wird im Application-Abschnitt befüllt - im Regelfall mit "Install")

Immer fleißig Variablen nutzen - im Idealfall bis zum Erbre**en. :mrgreen:
Grüße MaMa82


PS: EDV steht nicht für "Elektronische Datenverarbeitung", sondern vielmehr für "ENDE DER VERNUNFT"! :roll:

IronStorm
Posts: 72
Joined: 19. Jun 2018, 08:19
Contact:

Re: Ini Datei bearbeiten im Clientabschnitt

Post by IronStorm » 14. Aug 2018, 11:39

ich werd's versuchen :)
bin gerade dabei alles zu lernen :)

IronStorm
Posts: 72
Joined: 19. Jun 2018, 08:19
Contact:

Re: Ini Datei bearbeiten im Clientabschnitt

Post by IronStorm » 15. Aug 2018, 10:40

ich stehe noch vor einem kleinem Problem.
ich habe auch schon im Handbuch nach der Syntax geschaut aber es will einfach nicht klappen.
Ich möchte in der ini gerne einen Abschnitt komplett löschen.

hierzu nutze ich im [ini:Product] folgenden Befehl
"%appdata%\elsterformular\pica\ini\pica.ini", -UPDATE

in der ini steht folgendes drin:

Code: Select all

[UPDATE]
AutoUpdate=0
InternetAccessDialog=false
SilentDownload=false
InternetAccessDialogAntwort=false
den Abschnitt löscht er mir leider nicht.
Ich habe auch schon versucht das Update in "" zu setzen oder [] vor und hinter zu setzen. aber dieser Befehl klappt nicht.
Hab ich da noch einen Denkfehler drin?

MaMa82
Posts: 344
Joined: 10. Jun 2011, 13:56
Contact:

Re: Ini Datei bearbeiten im Clientabschnitt

Post by MaMa82 » 15. Aug 2018, 11:26

Code: Select all

-"%appdata%\elsterformular\pica\ini\pica.ini", UPDATE
vielleicht??? :lol: :?:

Ich muss allerdings gestehen, dass ich seit ich paketiere noch nie eine INI-Sektion löschen musste.
Also auch hier mal Neuland. :D
Grüße MaMa82


PS: EDV steht nicht für "Elektronische Datenverarbeitung", sondern vielmehr für "ENDE DER VERNUNFT"! :roll:

IronStorm
Posts: 72
Joined: 19. Jun 2018, 08:19
Contact:

Re: Ini Datei bearbeiten im Clientabschnitt

Post by IronStorm » 15. Aug 2018, 11:54

ne leider nicht.
ich habe jetzt einen anderen weg gefunden.

Code: Select all

[Ini:pica]
Path=%appdata%\elsterformular\pica\ini
-UPDATE
UPDATE, AutoUpdate, 0
UPDATE, InternetAccessDialog, false
UPDATE, SilentDownload, false
UPDATE, InternetAccessDialogAntwort, false
der löscht den gesamten UPDATE Abschnitt und fügt einen neuen mit 4 Einträgen hinzu.

im handbuch steht noch ein zusätzlicher lösungsweg drin der zumindest funktioniert um neue schlüssel anzulegen oder bei bestehenden etwas zu ändern.

Code: Select all

[ini:product]
"%appdata%\elsterformular\pica\ini\pica.ini", "UPDATE", ,"AutoUpdate=0"
"%appdata%\elsterformular\pica\ini\pica.ini", "UPDATE", ,"InternetAccessDialog=false"
"%appdata%\elsterformular\pica\ini\pica.ini", "UPDATE", ,"SilentDownload=false"
"%appdata%\elsterformular\pica\ini\pica.ini", "UPDATE", ,"InternetAccessDialogAntwort=false"
hiermit lassen sich die werte auch anpassen und auch löschen (nur 1 statt 2 , zwischen Abschnitt und Parameter verwenden) aber irgendwie keine ganze Sektion löschen.

Post Reply

Return to “Paketierung”

Who is online

Users browsing this forum: No registered users and 1 guest