0

Windows サービスといくつかのファイルをインストールするインストーラーがあります。インストールを新しいインストールで更新すると (新しいパッケージをインストールするだけで、マイナー アップグレード、製品バージョンの変更、製品 ID は変更されません)、サービスを開始できないことがあります。これは、サービスの起動時にサービスに必要なファイルがインストール フォルダーに不足しているためです。

現在、私たちはただ1つしか持っておらず<Feature />、1つしかありません<ComponentGroup />。それ<ComponentGroup />自体にはサービスが含まれており、ファイルを持つ他のコンポーネントがいくつか含まれています。次のようになります (空の属性はプレースホルダーであり、実際に入力されます)。

<Component Id="" Guid="" Directory="">
    <File Source="" Id="" />
    <File Source="" Id="" />
</Component>
<Component Id="" Guid="" Directory="">
    <File Source="" Id="" />
    <File Source="" Id="" />
</Component>
<Component Id="" Guid="" Directory="">
    <File Source="" Id="" />
    <File Source="" Id="" />
</Component>
<Component Id="" Guid="" Directory="">
    <File Source="" Id="" />
    <File Source="" Id="" />
    <File Source="" Id="" />
    <File Source="" Id="" />
    <ServiceInstall Id="ServiceInstaller" Type="ownProcess" Vital="yes" Name="" DisplayName="" Description="" Start="auto" Account="LocalSystem" ErrorControl="ignore" Interactive="no">
        <util:ServiceConfig FirstFailureActionType="restart" SecondFailureActionType="restart" ThirdFailureActionType="restart" ResetPeriodInDays="5" />
    </ServiceInstall>
    <ServiceControl Id="StartService" Start="install" Stop="both" Remove="uninstall" Name="" Wait="yes" />
</Component>

悪い点は、サービスが他のコンポーネントに依存していることです。

これらの依存関係をどのように指定できますか? または、を含むコンポーネントにすべてのファイルを配置する必要があります<ServiceInstall />か?

ありがとう、ヨハネス

4

1 に答える 1

0

問題は別の原因によるものと思われます。実際の問題を発見するのに役立つ良い計画はmsiexec MyApp.msi /log install.log、結果のログ ファイルを実行して検査することです。そのログは、ファイルが最初にインストールされたかどうかを証明し、別の問題を明らかにすることができます。

実際のインストールが実行される InstallExecuteSequence 中に、Windows インストーラは一連のアクションを通じてコン​​ポーネントをインストールします。ディスクにファイルを配置するアクションはInstallFilesと呼ばれ、サービスを開始するアクションはStartServicesと呼ばれます。

そうしないように指示しない限り、WiX は InstallFiles アクションの後に StartServices アクションをスケジュールするため、サービスが開始される前にすべてのファイルがディスク上に存在する必要があります。

于 2013-09-11T14:34:53.227 に答える