Ich hatte die Tage die Aufgabe ein Paket so zu modifizieren, dass es sich bei der Reinstallation bzw. beim einmaligen Erzwingen anders verhält als im Standard. Dabei fiel mir gleich die Variable SoftwareDepotDistributionFlags ein, die ich jedoch bis dato nicht genutzt hatte. In der Matrix42 Online Hilfe fand ich Hinweise zur Nutzung und Auswertung der entsprechenden SoftwareDepotDistributionFlags Variable. So „gestärkt“ machte ich mich an das Werk. Doch nach kurzer Zeit stellte sich etwas Ernüchterung ein, da es nicht sofort so funktioniert hat wie ich es mir vorgestellt hatte.
Dann habe ich angefangen mir den Wert der SoftwareDepotDistributionFlags Variable durch Logging zu erarbeiten …
Nach dem Logging, der anschließenden Bestätigung durch den Support (Danke an Hr. Zinn) und weitere erfahrene Empirum Nutzer habe ich die nachfolgende Tabelle erstellt, die Euch bei der Nutzung hoffentlich schneller zum Ziel bringt als mich ursprünglich. In der Nachbetrachtung hat mich am meisten zum Stolpern gebracht, dass in der Hilfe vom bitweisen Vergleich mit Dezimal Werten gesprochen wird und dann die aufgeführte Tabelle Hex Werte enthält!
Anbei die von mir zusammengestellte Tabelle mit den Verteilbefehlen aus der DDC, den dazugehörigen Dezimal Werten für den bitweisen Vergleich sowie dem Verteilbefehl aus der deutschen Oberfläche.
Verteilbefehl DDC | SoftwareDistributionFlags (Dezimalwert) | Verteilbefehl aus der deutschen Oberfläche |
INSTALL | 1 | Installieren |
UPDATE | 2 | Erneuern |
FORCE | 4 | Immer Erzwingen |
UNINSTALL | 8 | Deinstallieren |
REVOKE | 16 | Ablehnen möglich |
FORCEONCEMACHINE | 32 | Maschinenteil erzwingen |
FORCEONCECLIENT | 64 | Benutzerteil erzwingen |
AFTERFORCE | 128 | Erzwingen (Nach Ablauf des Zeitplaners) |
AFTERREVERSE | 256 | Umkehren (Nach Ablauf des Zeitplaners) |
HIDE | 512 | Nicht anzeigen |
REINSTALL | 1024 | Reinstallation mit vorheriger Deinstallation |
OFFLINE | 2048 | Lokal cachen |
IGNOREMTF | 8192 | Installationszeitraum ignorieren (ist bei einem Push immer gesetzt!) |
Arbeiten mit den Werten in der Setup.inf
Setup.inf Beispiele:
;---Abfragen eines gesamten Verteilbefehls (Reinstallation per Pull/Push ohne vorherige Deinstallation) If BitXor (%SoftwareDepotDistributionFlags%, 99) == "0" | BitXor (%SoftwareDepotDistributionFlags%, 8291) == "0" Then "ReInstall" Else "EverythingElse" EndIf ;---Abfragen einer einzelnen Verteiloption If BitAnd (%SoftwareDepotDistributionFlags%, 32) != "0" then "ForceOnceMachine_is_set" else "ForceOnceMachine_is_not_set" endif