Проблемы с удалением программы на панели управления, созданной с помощью WiX - PullRequest
1 голос
/ 18 мая 2019

Я создаю MSI-инсталлятор, который запускает сервисы с автоматическим запуском для Windows, используя wix toolset. MSI была успешно скомпилирована и установлена, и службы работают правильно.

Проблема в том, что при попытке удалить программу с панели управления отображается следующее сообщение:

problem

Я попытался удалить программу из regedit и попытался установить с помощью команды:

MsiExec /I installer.msi REINSTALLMODE=voums REINSTALL=ALL

Вот код описания продукта и упаковки:

<Product Name='Foobar 1.0' Manufacturer='Acme Ltd.' Id='6DA5C23A-86C7-4D14-AEC0-86416A69ABDE' UpgradeCode='6DA5C23A-7349-453F-94F6-BCB5110BA4FD' Language='1033' Codepage='1252' Version='1.0.0'>
    <Package Id='*' Keywords='Installer' Description="Acme's Foobar 1.0 Installer" Comments='Foobar is a registered trademark of Acme Ltd.' Manufacturer='Acme Ltd.' InstallerVersion='100' Languages='1033' Compressed='yes' SummaryCodepage='1252' />

В INSTALLDIR у меня есть exe-файл для обслуживания, и я выполняю некоторые действия:

<Directory Id='INSTALLDIR' Name='Foobar 1.0'>

    <Component Id='ConfPathEnv' Guid='6DA5C23A-6BE3-460D-A14F-75658D16550B' KeyPath="yes">
        <Environment Id="AQLIGHT_CONFIG_PATH" Name="AQLIGHT_CONFIG_PATH" Value="[INSTALLDIR]config.json" Permanent="yes" Part="last" Action="set" System="yes" />
    </Component>

    <Component Id='MainExecutable' Guid='6DA5C23A-83F1-4F22-985B-FDB3C8ABD471'>
        <File Id='serviceEXE' Name='service.exe' DiskId='1' Source='service.exe' KeyPath='yes' />
        <ServiceInstall Id="InstallService" Name="AqLightService" DisplayName="AqLightService 1.0" Start="auto" ErrorControl="normal" Arguments="install" Type="ownProcess" />
        <ServiceControl Id="ControlService" Name="AqLightService" Start="install" Stop="uninstall" Remove="uninstall" Wait="yes" />
    </Component>

</Directory>

Чтобы удалить папку при удалении программы, я использую следующий код:

<Directory Id="ProgramMenuFolder" Name="Programs">
    <Directory Id="ProgramMenuDir" Name="Foobar 1.0">
        <Component Id="ProgramMenuDir" Guid="6DA5C23A-7E98-44CE-B049-C477CC0A2B00">
            <RemoveFolder Id='ProgramMenuDir' On='uninstall' />
            <RegistryValue Root='HKCU' Key='Software\[Manufacturer]\[ProductName]' Type='string' Value='' KeyPath='yes' />
        </Component>
    </Directory>
</Directory>

Я несколько раз пытался изменить GUID для каждого компонента, но это не помогло.

1 Ответ

1 голос
/ 18 мая 2019

Настраиваемое действие : Это сообщение об ошибке может означать несколько вещей, но чаще всего оно вызвано неудачным настраиваемым действием. Тем не менее, в этом случае это выглядит как сообщение от iTunes ?

Ведение журнала : нет двух способов: вам нужен подробный файл журнала, чтобы попытаться понять это (скорректируйте пути соответствующим образом):

msiexec.exe /x "Setup.msi" /L*V "C:\Setup.log"

Самовосстановление? : Я предполагаю, что у вас поврежденная машина / база данных установщика Windows, или у вас проблема с самовосстановлением превратился в поврежденную машину, взломав реестр. Может быть. При самовосстановлении .


Кондиционирование : если вам нужны условия, чтобы работать только в определенное время / режимы установки - вам нужно заниматься кондиционированием. Есть много предыдущих ответов об условиях MSI. Их всегда трудно понять правильно, и тестирование необходимо. Пожалуйста, смотрите ответы ниже для информации:

Вам может быть достаточно этого условия (без гарантий):

NOT Installed AND NOT UPGRADINGPRODUCTCODE

Пожалуйста, проверьте во всех режимах установки:: install, uninstall, modify, repair , self-repair, patching, major upgrade, etc.... Трудно сказать, как все устроено, это не заменит реальное тестирование (просто констатирую очевидное).


Вот более подробная информация о регистрации и интерпретации файла журнала:

...