4 Stimmen

Wie kann man verhindern, dass ein Windows-Benutzer während eines Patches entfernt und neu angelegt wird?

Ich habe ein Projekt, das die WiX-Erweiterung WixUtilExtension verwendet, um einen Benutzer für unsere Windows-Dienste zu erstellen. Wenn ich die Installation patche (mit einer .msp), werden die benutzerdefinierten Aktionen RemoveUser und CreateUser ausgeführt.

Ich möchte nicht, dass diese von der WiX-Erweiterung erstellten benutzerdefinierten Aktionen während eines Patches ausgeführt werden.

Ich kann eine Bedingung direkt zur benutzerdefinierten Aktion (ConfigureUsers) in der Tabelle InstallExecuteSequence der MSI um dies zu verhindern, aber ich habe keine Möglichkeit gefunden, dies in WiX zu handhaben.

Wie kann ich mit WiX verhindern, dass RemoveUser und CreateUser während eines Patches ausgeführt werden?

<util:Group Id="LocalAdministrators" Name="Administrators"/>
<DirectoryRef Id="INSTALLLOCATION" DiskId="1">
    <Component Id="CreateServiceAccountUser" Guid="{614550A7-C766-4B5D-9BF9-233D07EB3B69}">

        <util:User Id="ServiceAccountUser"
                   CanNotChangePassword="yes"
                   CreateUser="yes"
                   Disabled="no"
                   FailIfExists="no"
                   LogonAsService="yes"
                   Name="TestUser"
                   Password="testuserpw"
                   PasswordExpired="no"
                   PasswordNeverExpires="yes"
                   RemoveOnUninstall="yes"
                   UpdateIfExists="yes">
            <util:GroupRef Id="LocalAdministrators"/>
        </util:User>

        <RegistryKey Root="HKMU" Key="Software\AMT\WebBrix">
            <RegistryValue Name="CreateServiceAccountUser"
                           Value="Common"
                           Type="string"
                           KeyPath="yes" />
        </RegistryKey>

    </Component>
</DirectoryRef>

3voto

Charles Gargent Punkte 1777

Das können Sie in WiX tun:

<InstallExecuteSequence>
    <Custom Action='ConfigureUsers' 
            After='InstallFinalize'>NOT Installed</Custom>
</InstallExecuteSequence>

Hier sind einige weitere Bedingungen

  1. Aktion wird nur während der Installation ausgeführt Bedingung: NICHT INSTALLIERT UND NICHT PATCH
  2. Aktion läuft nur beim Entfernen von MSI Bedingung: REMOVE
  3. Aktion läuft während Installation und Reparatur Bedingung: NICHT ENTFERNEN
  4. Aktion läuft beim Installieren und Entfernen Bedingung: Es darf keine Bedingung vorliegen
  5. Aktionsaufrufe EXE installiert durch MSI Bedingung: NICHT installiert UND NICHT PATCH
  6. Nur bei der Erstinstallation ausführen: NICHT INSTALLIERT
  7. Wird bei der Erstinstallation oder bei Auswahl der Reparatur ausgeführt. NOT Installed OR MaintenanceMode="Modify"
  8. Wird bei der Deinstallation über die Befehlszeile oder das Menü Hinzufügen/Entfernen ausgeführt. REMOVE~="Alle" OR MaintenanceMode="Entfernen"

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X