Büyük bir yükseltmeyle ilgili bir sorunla karşılaştım. Yükleyici bir hizmet içerir ve yükseltmede kurulum işlemini bitirmek için yeniden başlatma gerektiğini belirten bir açılır pencere aldım.WiX: RemoveExistingÜrününden önce hizmeti durdur VEYA Kaldırılmadan önce işlemi durdurması için yükseltilmiş CustomAction'ı çalıştır. RemoveExistingProducts
Bu davranışı önlemek için, yalnızca hizmeti RemoveExistingProducts
(daha çok InstallValidate
) yürütülmeden önce durdurmam gerekiyor.
MajorUpgrade
InstallInitialize
'dan sonra yerleştirilir ve paket InstallPrivileges="elevated"
sahiptir. InstallValidate
çağrılmadan önce ServiceControl
hizmeti durdurma değil
<Component Id="myservice_Service" Guid="*">
<File Id="myservice.exe" KeyPath="yes" Vital="yes"
Source="SourceDir\bin\myservice.exe"/>
<ServiceInstall Id="myservice_ServiceInstall" Type="ownProcess"
Vital="yes" Name="myservice" DisplayName="myservice Service"
Description="myservice Service" Start="auto" Account=".\LocalSystem"
ErrorControl="ignore" Interactive="no" Arguments="--run"/>
<ServiceControl Id="myservice_ServiceControl" Name="myservice" Wait="yes" Stop="uninstall"/>
</Component>
aracılığıyla hizmet ServiceInstall
tarafından yüklenir:
Durum 1:
Ben iki dava var. Dur = "her ikisi" de olsa bile. Böylece açılır. Hizmetin yükleyici tarafından başlatılmadığını unutmayın.
Makul mesajlar buldum (alıntı):
- How does one stop a Windows service to do an upgrade install?
- Upgrade a Windows Service without Uninstalling
Durum 2: Hizmetin bir CustomAction
(vardır bazıları tarafından yüklenen Ayrıca neden ServiceInstall
aracılığıyla yapmıyoruz). Bu durumda hizmeti durdurmak için bir yürütülebilir dosyayı çağırmak zorundayım ("myservice.exe --stop"). Bunun için zor oluyor, çünkü ICE63 nedeniyle 'un RemoveExistingProducts
çağrılmasından önce programlanmasına izin verilmiyor. Peki, bunu nasıl başarabilirim?
Şimdiye kadar okuduğum mesajlar gibi: Ben üretmek gerekir çünkü
- WiX call app on uninstall before User prompt "close manually"
- WiX close application before uninstall - close open applications message
- Close a systemtray app before uninstalling using wix
- http://t53456.windows-development-wix-user.wintalk.us/stop-a-service-before-uninstall-t53456.html
Bir bootstrapper exe, hiçbir seçenektir düz bir MSI. Burada
buldum benzer cevaplanmamış sorun: Wix Installer Problem: Why does RestartManager mark Service as RMCritical and not RMService
Olası çoğaltma [Wix durdurma hizmetini kaldırma/yükseltme: önleme "yeniden başlat penceresini aç" (kullanmayla ilgili durum)) (https://stackoverflow.com/questions/31787804/wix-stop-service-on- kaldırma-yükseltme-önleme-yeniden-başlat-pop-dosya-içinde-kullanım-situ) – BartoszKP