如何防止在修补程序中删除和创建Windows用户

时间:2010-06-18 20:19:27

标签: wix wix-extension

我有一个项目使用WiX扩展WixUtilExtension为我们的Windows服务创建用户。当我修补安装(使用.msp)时,将执行自定义操作RemoveUser和CreateUser。

我不希望这些WiX扩展程序在修补程序中创建自定义操作。

我可以在MSI的InstallExecuteSequence表中直接向自定义操作(ConfigureUsers)添加条件以防止这种情况,但我还没有找到在WiX中处理此问题的方法。

使用WiX,我如何防止在修补程序中执行RemoveUser和CreateUser?

<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>

1 个答案:

答案 0 :(得分:3)

你可以在WiX中做到这一点:

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

以下是一些更多条件

  1. 仅在安装期间运行操作   条件:未安装且未安装
  2. 仅在删除MSI期间运行操作   条件:删除
  3. 操作在安装和修复期间运行   条件:不能移除
  4. 操作在安装和删除期间运行   条件:必须没有条件
  5. 操作调用MSI安装的EXE   条件:未安装且未安装
  6. 仅在初始安装时运行:   未安装
  7. 在初始安装时运行或选择修复时运行。   未安装或维护模式=“修改”
  8. 从命令行卸载或添加/删除菜单时运行。   删除〜=“全部”或维护模式=“删除”
相关问题