سؤال

أنا أعمل على مثبت WIX 3.6 لخدمة الويب.لكنني واجهت مشكلة عند محاولة استخدام HeatDirectory لجمع كل المخرجات الضرورية وبغض النظر عما أحاول الحصول عليه، أحصل على الخطأ التالي لكل ملف تم حصاده:

يتعذر على النظام العثور على الملف 'SourceDir\Some.dll...'

تحدث الأخطاء في WcfService.wxs؛الجزء الغريب هو أن WcfService.wxs يتم إنشاؤه تلقائيًا بواسطة قسم الدليل الحراري في ملف مشروعي (أدناه). كيف يمكن أن ينفجر قائلاً إنه لا يمكنه العثور على ملفات .dll هذه إذا كان عليه معرفة مكانها لإنشاء WcfService.wxs في المقام الأول؟ تحدث هذه الأخطاء حتى عندما أقوم بتنزيل وإنشاء مشروع WIX example (كما هو) من أي من البرامج التعليمية التي قرأتها.

الهدف:لأتمتة أكبر قدر ممكن من تضمين .dll (أي.الاستفادة من الحصاد للتعامل مع مشاريع التبعية، وما إلى ذلك.)

أقوم بتشغيل Win 7 64bit والمشروع هو .NET 4.

المنتج.wxs:

    <?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
  <Product Id="*" Name="CompleteInstall" Language="1033" Version="1.0.0.0" Manufacturer="Technologies" UpgradeCode="b2ae6aa5-263f-4f9a-a250-8599a7f2cb03">
    <Package InstallerVersion="200" Compressed="yes" />

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

    <Directory Id="TARGETDIR" Name="SourceDir">
      <Directory Id="ProgramFiles64Folder">
        <Directory Id="CommonDir1" Name="Common Directory 1">
          <Directory Id="CommonDir2" Name="Common Directory 2">
            <Directory Id="INSTALLFOLDER" Name="Install Directory"/>
          </Directory>
        </Directory>
      </Directory>
    </Directory>

    <Feature Id="ProductFeature" Title="CompleteInstall" Level="1">
      <ComponentGroupRef Id="WcfService_Project" />
    </Feature>

    <Property Id="WIXUI_INSTALLDIR">INSTALLFOLDER</Property>
    <UIRef Id="WixUI_InstallDir" />
  </Product>
</Wix>

ملف المشروع:

<Target Name="BeforeBuild">
    <MSBuild Projects="%(ProjectReference.FullPath)" Targets="Build" Properties="Configuration=$(Configuration);Platform=x86" Condition="'%(ProjectReference.ContentProject)'=='True'" />
    <PropertyGroup>
      <LinkerBaseInputPaths>%(ProjectReference.RootDir)%(ProjectReference.Directory)bin\$(Platform)\$(Configuration)\</LinkerBaseInputPaths>
    </PropertyGroup>
    <HeatDirectory OutputFile="%(ProjectReference.Filename)-temp.xml" 
                   Directory="%(ProjectReference.RootDir)%(ProjectReference.Directory)bin\$(Platform)\$(Configuration)\"
                   DirectoryRefId="INSTALLFOLDER" 
                   ComponentGroupName="%(ProjectReference.Filename)_Project"
                   SuppressCom="true" 
                   SuppressFragments="true" 
                   SuppressRegistry="true"
                   SuppressRootDirectory="true" 
                   AutoGenerateGuids="false" 
                   GenerateGuidsNow="true" 
                   ToolPath="$(WixToolPath)" 
                   Condition="'%(ProjectReference.ContentProject)'=='True'" />
    <XslTransformation XmlInputPaths="%(ProjectReference.Filename)-temp.xml"
                       XslInputPath="XslTransform.xslt" 
                       OutputPaths="%(ProjectReference.Filename).wxs" 
                       Condition="'%(ProjectReference.ContentProject)'=='True'" />
  </Target>

WcfService.wxs:

<?xml version="1.0" encoding="utf-8"?><Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Fragment>
        <DirectoryRef Id="INSTALLFOLDER">
            <Component Id="cmpE6EBA3D8D6D4DB0C93E73200C78DCC51" Guid="{C88B5CF9-8807-45DF-AA6F-732437B74BB6}">
                <File Id="fil0118BBA61671E80581CA9C9AA6DD3E8D" KeyPath="yes" Source="SourceDir\Some.dll" />
            </Component>
        </DirectoryRef>
    </Fragment>
    <Fragment>
        <ComponentGroup Id="WcfService_Project">
            <ComponentRef Id="cmpE6EBA3D8D6D4DB0C93E73200C78DCC51" />
        </ComponentGroup>
    </Fragment>
</Wix>
هل كانت مفيدة؟

المحلول

كانت المشكلة غياب خاصية المعالجة الحرة المسماة.قمت بإصلاح المشكلة مع الإضافات التالية إلى ملف WixProj الخاص بي: giveacodicetagpre.

كما ترون، أحتاج أولا إلى تحديد متغير ثابت للاستخدام المحلي.قمت بتعيين المتغير يساوي مسار الجذر لمشروع WCF الخاص بي.ثانيا، استخدمت هذا المتغير كما بلدي المعالجة المسبقة.أخيرا أنا قادر على حصاد الملفات بشكل حيوي / متكرر الناتج عن MSBUILD.الخطوة التالية: استبعاد الملفات غير الضرورية.سأشير إلى هذا رابط .

انظر أدناه wixproj الكامل: giveacodicetagpre.

نصائح أخرى

كنت أحصل على مشكلة مماثلة لك عندما انتقلت من إعداد موقع أساسي باسم WIX إلى أحد تلك الإنتاج لدينا.

على افتراض أنك تتبع المثال مثال Paul Reynolds" مثال وهذا مثال المقارنة

إذا نظرت في تعليقات الصفحة التالية - http://blogs.planetsoftware.com.au/paul/archive/2012/02/20/creating-a-Web-application-installer -WITH-WIX-3.5-and-Visual.aspx

أول تعليق يذكر تغيير الأساليب المسببة للمسببة الموجودة في مثال المقارنة. giveacodicetagpre.

اضطررت إلى إزالة خاصية تحويل وتحويل الدليل ولكن حتى الآن جيدة جدا.

نأمل أن يساعدك في الإشارة إليك في الاتجاه الصحيح.

تحديث: إذا وضعت giveacodicetagpre.

وإضافة: giveacodicetagpre.

انظر التعليق نحو القاع . أنا لا أفعل تحويل، لذلك تركت ذلك. إلى المعرفة الحرة، يجب أن تعمل مع عدم وجود ملف Proj في الأسفل.

هذا ربما سيخفض سمعتي، ولكن ما أجده مثيرا للاهتمام هو http://www.paraesthesia.com الموقع، هل كنت أعمل في مشروع واحد، ولكن عند محاولة آخر لم يكن كذلك ر العمل.
بعد النظر إلى الإخراج، يبدو أن اتخاذ المشروع المناسب للحرارة والشموع، ولكن يبدو أن الضوء يأخذ واحدا عشوائيا. بعد مقارنة المشروعين، لاحظت أن مشروع العمل كان لديه مشروع للحصاد كآخر مشروع مدرج. عندما نقلت المشروع في ملف .wixproj إلى المرجع الأخير، عملت.
أنا أستخدم 3.5.2519 في هذا الوقت. أعلم أنه من القديم ولكن لدينا مشاريع تتطلب الحصاد الحقيقي وحصاد في الواقع في Visual Studio.

لذلك يتضمن WcfService.wxs الخاص بك ما يلي:

<File Id="fil0118BBA61671E80581CA9C9AA6DD3E8D" KeyPath="yes" Source="SourceDir\Some.dll" />

يشير هذا إلى SourceDir\Some.dll.يجب أن يكون هذا الملف موجودًا على جهاز الكمبيوتر الذي تقوم بتجميع مشروعك فيه.ربما تحتاج إلى تغيير المسار.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top