MajorUpgrade、ServiceControl、.config ファイルをうまく連携させるのに苦労しています。 私の他の質問の後、私は今また反対の問題を抱えています。
以前は、AssemblyFileVersions が静的だったためにファイルが上書きされていなかったので、修正しました。 1)現在、既存のファイルの変更日がファイルの作成日とは異なり、キーパスとして設定されていてもSchedule="afterInstallExecute"
、KeyPath='yes'
.configファイルはまだ上書きされています。現在、 .configファイルを上書きして、インストール後にサービスを再起動する必要があります。
2)それを修正しても、再起動を回避するという問題がまだあります。私がそう言うならSchedule="afterInstallInitialize"
、.config ファイルは確実にサービスと共に削除されるのが早すぎると思います。私が言うとSchedule="afterInstallExecute"
、サービスは停止せず、インストール後に再起動が必要です。(そうですよね?) インストールの前にサービスを手動で停止すると、再起動を回避できます。カスタム アクションを追加するとnet stop
、私が推測するものを置き換えることができますServiceControl
が、すべての条件を正しく設定するのは複雑に思えます。
3)おまけとして、アップグレード中にサービスを削除したくありません。サービスを停止し、バイナリを置き換えて、サービスを再開することはできますか? これにより、アップグレードのためにサービス アカウントの資格情報を再入力する必要がなくなります。ただし、もちろん、最初のインストール時にインストールし、機能の削除時にアンインストールする必要があります。
これがその要点です(何らかの問題が発生した場合に備えて、後でバンドルされます):
<MajorUpgrade DowngradeErrorMessage="A newer version is already installed."
Schedule="afterInstallExecute" />
<ComponentGroup Id="ServiceCG">
<Component Id="Service" Guid='*' Win64='yes' Directory='INSTALLDIR'>
<File Id='ServiceEXE' Source='$(var.root)Service.exe' />
<ServiceInstall Id="ServiceInstall"
Name="MyService"
DisplayName="My Server"
Type="ownProcess"
Start="auto"
ErrorControl="normal"
Description="My Server Service"
Interactive="no"
Account="[...]"
Password="[...]" />
<ServiceControl Id="StopService" Name="MyService" Start="install"
Stop="uninstall" Wait="yes" Remove="both" />
<util:User Id="UpdateServiceAccountLogonAsService" UpdateIfExists="yes"
CreateUser="no" Name="[SERVICEACCOUNTFULL]"
LogonAsService="yes"/>
</Component>
<Component Id="ServiceConfig" Guid='*' Win64='yes' Directory='INSTALLDIR'>
<File Id='FileServiceConfig' KeyPath='yes'
Source='$(var.root)Service.exe.config' />
</Component>
</ComponentGroup>
関連するが未回答:
WiX バージョン 3.8.1128.0