1

私はmsiを作成するためのwixコードを開発しています。すべてのコンポーネントとライブラリをwixプロジェクトに追加しましたが、必要に応じてmsiを作成できません。助けてください。コードは次のとおりです。

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

<Product Name='SmartViewer'
          Id="*"
          Language='1033'
          Codepage='1252'
          Version='1.0.0'
          UpgradeCode='9C5E4073-EFDE-419B-935D-CE2632BC560E'>

    <Package Keywords='Installer,MSI'
             InstallerVersion='100'
             Languages='1031'
             Compressed='yes'
             SummaryCodepage='1252' />

    <Media Id="1" Cabinet="myapp.cab" EmbedCab="yes" />

    <Directory Id="TARGETDIR" Name="SourceDir">
        <Directory Id="ProgramFilesFolder">
            <Directory Id="MyProgramDir" Name="myproject" >
                <Directory Id="INSTALLFOLDER" Name="proj1" />
            </Directory>
        </Directory>

    <DirectoryRef Id="INSTALLFOLDER">
        <Component Id='MainExecutable' Guid='*'>
            <File Id='ExecutableFile' Name='mv.exe' DiskId='1' Source='mv.exe' KeyPath='yes'/>
        </Component>
        <Directory Id="imageformats" Name="imageformats">
            <Component Id='jpeg4Library' Guid='*'>
                <File Id='jpeg4' Name='jpeg4.dll' DiskId='1' Source='jpeg4.dll' KeyPath='yes' />
            </Component>
        </Directory>

        <Component Id='Network4Library' Guid='*'>
            <File Id='Network4' Name='Network4.dll' DiskId='1' Source='Network4.dll' KeyPath='yes' />
        </Component>

        <Component Id='Multimedia4Library' Guid='*'>
            <File Id='Multimedia4' Name='Multimedia4.dll' DiskId='1' Source='Multimedia4.dll' KeyPath='yes' />
        </Component>

        <Component Id='QtGui4Library' Guid='*'>
            <File Id='Gui4' Name='Gui4.dll' DiskId='1' Source='Gui4.dll' KeyPath='yes' />
        </Component>

        <Component Id='Designer4Library' Guid='*'>
            <File Id='Designer4' Name='Designer4.dll' DiskId='1' Source='Designer4.dll' KeyPath='yes' />
        </Component>

        <Component Id='Core4Library' Guid='*'>
            <File Id='Core4' Name='Core4.dll' DiskId='1' Source='Core4.dll' KeyPath='yes' />
        </Component>


        <Component Id='libmfxsw32Library' Guid='*'>
            <File Id='libmfxsw32' Name='libmfxsw32.dll' DiskId='1' Source='libmfxsw32.dll' KeyPath='yes' />
        </Component>

        <Component Id='libiomp5mdLibrary' Guid='*'>
            <File Id='libiomp5md' Name='libiomp5md.dll' DiskId='1' Source='libiomp5md.dll' KeyPath='yes' />
        </Component>

        <Component Id='ippcore7.1Library' Guid='*'>
            <File Id='ippcore7.1' Name='ippcore-7.1.dll' DiskId='1' Source='ippcore-7.1.dll' KeyPath='yes' />
        </Component>

        <Component Id='ippccw77.1Library' Guid='*'>
            <File Id='ippccw77.1' Name='ippccw7-7.1.dll' DiskId='1' Source='ippccw7-7.1.dll' KeyPath='yes' />
        </Component>

        <Component Id='ippccv87.1Library' Guid='*'>
            <File Id='ippccv87.1' Name='ippccv8-7.1.dll' DiskId='1' Source='ippccv8-7.1.dll' KeyPath='yes' />
        </Component>

        <Component Id='ippccs87.1Library' Guid='*'>
            <File Id='ippccs87.1' Name='ippccs8-7.1.dll' DiskId='1' Source='ippccs8-7.1.dll' KeyPath='yes' />
        </Component>

        <Component Id='ippccp87.1Library' Guid='*'>
            <File Id='ippccp87.1' Name='ippccp8-7.1.dll' DiskId='1' Source='ippccp8-7.1.dll' KeyPath='yes' />
        </Component>

        <Component Id='ippccg97.1Library' Guid='*'>
            <File Id='ippccg97.1' Name='ippccg9-7.1.dll' DiskId='1' Source='ippccg9-7.1.dll' KeyPath='yes' />
        </Component>

        <Component Id='ippcc7.1Library' Guid='*'>
            <File Id='ippcc7.1' Name='ippcc-7.1.dll' DiskId='1' Source='ippcc-7.1.dll' KeyPath='yes' />
        </Component>

        <Component Id='EULALibrary' Guid='*'>
            <File Id='EULA' Name='EULA.rtf' DiskId='1' Source='EULA.rtf' KeyPath='yes' />
        </Component>
    </DirectoryRef> 


    <Directory Id="ProgramFilesFolder">
        <Directory Id="MyProgramDir" Name="myproj" >
                <Directory Id="INSTALLFOLDER" Name="proj1" /
                    <Component Id="TextFileComponent" Guid="*">
                        <File Id="TextFile" Name="Logs.txt" DiskId="1"
                              Source="Logs.txt" KeyPath="yes" />
                    </Component>
        </Directory>
    </Directory>

    <Directory Id="DesktopFolder">
        <Component Id="ExecutableFileShortcutComponent" Guid="*">
            <Shortcut Id="ExecutableFileShortcut" Name="smart viewer" 
                  Description="Shortcut To Executable File"
                  Target="[INSTALLFOLDER]mv.exe" />
    </Directory>

    <Directory Id="ProgramMenuFolder">
        <Directory Id="MyProgramDir" Name="myproj">
            <Component Id="ExecutableFileShortcutComponent" Guid="*">
                <Shortcut Id="ExecutableFileShortcut" Name="smart viewer"
                      Description="Shortcut To Executable File"
                      Target="[INSTALLFOLDER]mv.exe" />

        </Component>
     </Directory>

  </Product>
 </Wix>

コンポーネントがdllパスを取得していません。ファイルIDでソースにパスを渡そうとしましたが、同じ問題が見つかりました。良い提案を楽しみにしています。

4

2 に答える 2

1

ファイルへのフル パスを参照する必要があります。

<File Id="Microsoft.Practices.Unity"
      Name="jpeg4.dll"
      Source="$(var.BuildOutputDir)\jpeg4.dll" />

フォルダへ$(var.BuildOutputDir)のフル パスです。これらのファイルが別の参照プロジェクトの出力にある場合は、使用できます$(var.OtherProject.TargetDir)

于 2013-02-22T11:41:24.430 に答える
0

ファイルに有効な XML が含まれていません。次のフラグメントは壊れています。

<Directory Id="ProgramFilesFolder">
    <Directory Id="MyProgramDir" Name="myproj" >
            <Directory Id="INSTALLFOLDER" Name="proj1" /
                <Component Id="TextFileComponent" Guid="*">
                    <File Id="TextFile" Name="Logs.txt" DiskId="1"
                          Source="Logs.txt" KeyPath="yes" />
                </Component>
    </Directory>
</Directory>

この線

            <Directory Id="INSTALLFOLDER" Name="proj1" /

する必要があります

            <Directory Id="INSTALLFOLDER" Name="proj1" >

1つ</Directory>欠けています。</Component>また、2 つの位置で追加する必要があります。.WXS ファイルをロードするときに無効な XML を指す WiXEdit を試してください。

さらに、 を追加する必要があり<feature>ます。

于 2013-02-22T10:10:12.317 に答える