0

私はWIXを初めて使用します。実は、これは私の最初のプロジェクトです。したがって、私が問題を抱えていることは驚くべきことではありません。

インストーラーをすべてセットアップしてロールする準備ができていましたが、今朝、サービスに変更を加える必要があったため、変更を加えてコンパイルしました。WIX プロジェクトをビルドしてインストールしました。サービスを起動して実行しましたが、古いコードが実行されました。結局のところ、私のサービスの古いバージョンがまだインストールされています。これは、サービスの新しいバージョンがパッケージ化されていないということですか、それとも何らかのアップグレード ルールが欠落していたということですか? 何らかの理由で PDB ファイルは更新されましたが、EXE は更新されませんでした。

以下は私のwxsファイルです。親切にしてください...

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">

<?define AppName="My Service"?>
<?define MfgName="My Company"?>
<?define SourcePath="..\My Service\bin\$(var.Configuration)"?>

<Product Name="$(var.AppName)" Language="1033" Version="1.0.0.0" Manufacturer="$(var.MfgName)" 
       Id="*" UpgradeCode="063de86b-f12b-4af1-91ff-ce0917fffd5c" Codepage="1252">

<Package Id="*" Keywords="Installer" Description="$(var.AppName) Installer" 
         Manufacturer="$(var.MfgName)" Comments="My Service blah blah blah"
         InstallerVersion="200" Compressed="yes" InstallScope="perMachine" SummaryCodepage="1252" />

<!--
    <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
    <MediaTemplate />
-->

<Media Id="1" Cabinet="setup.cab" EmbedCab="yes" DiskPrompt="CD-ROM #1"/>
<Property Id="DiskPrompt" Value="$(var.AppName) Installer [1]"/>

<Directory Id="TARGETDIR" Name="SourceDir">
        <Directory Id="ProgramFilesFolder" Name="PFiles">
    <Directory Id="CompanyFolder" Name="$(var.MfgName)">
              <Directory Id="INSTALLFOLDER" Name="$(var.AppName)">
        <Component Id="ServiceFile" Guid="3688d9ee-08ed-4dde-87d8-3b7a752a99bf">
          <File Id="ServiceEXE" Name="My Service.exe" DiskId="1" Source="$(var.SourcePath)\My Service.exe" KeyPath="yes" Vital="yes" />
          <File Id="ServicePDB" Name="My Service.pdb" DiskId="1" Source="$(var.SourcePath)\MY Service.pdb" KeyPath="no" Vital="yes"/>
          <File Id="LibraryDLL" Name="library.dll" DiskId="1" Source="$(var.SourcePath)\library.dll" KeyPath="no" Vital="yes"/>
          <File Id="LibraryPDB" Name="library.pdb" DiskId="1" Source="$(var.SourcePath)\library.pdb" KeyPath="no" Vital="yes"/>
          <File Id="Config" Name="My Service.exe.config" DiskId="1" Source="$(var.SourcePath)\My Service.exe.config" KeyPath="no" Vital="yes"/>

          <ServiceInstall Id="InstallService" Name="MyService" Type="ownProcess" ErrorControl="normal" Start="auto"
                          DisplayName="$(var.AppName)" Description="My Service blah blah blah">
            <ServiceConfig OnInstall="yes" DelayedAutoStart="yes" />
          </ServiceInstall>
          <ServiceControl Id="ControlService" Name="MyService" Remove="both" Stop="both" Wait="no"/>
        </Component>
      </Directory>
    </Directory>
        </Directory>
    </Directory>

<Feature Id="MainFeature" Title="$(var.AppName) Setup" Level="1">
  <ComponentRef Id="ServiceFile"/>
    </Feature>
</Product>
</Wix>
4

1 に答える 1

1

インストールが成功してもファイルが更新されていない場合は、インストールをログに記録して理由を確認する必要があります。例えば:

msiexec /i filename.msi /lvoicewarmupx log.txt

ファイルが更新されない理由の 1 つは、Windows インストーラーが既存のファイルのバージョンをチェックし、インストールしようとしているファイルのバージョンよりも新しい場合です。

于 2013-01-02T18:47:59.973 に答える