Es kommt vor, daß man in Visual Studio plötzlich nicht mehr die gewohnte IntelliSense Unterstützung hat – urplötzlich, ohne daß man etwas geändert hat.
Woran das liegt, kann ich nicht sagen, in meinem Fall hat das jedoch geholfen, das Problem zu beseitigen:
- Reg-Eintrag hinzufügen:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\7.1\Editors\{C76D83F8-A489-11D0-8195-00A0C91BBEE3}\Extensions]
„wxs“=dword:00000028
- Prüfen, ob die Xsd Schema Dateien wix.xsd und wixloc.xsd aus dem Wix\doc Verzeichnis im Visual Studio Verzeichnis liegen
- VS 2003: C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\Packages\schemas\xml\
- VS 2005: C:\Program Files\Microsoft Visual Studio 8\Xml\Schemas
- VS 2008: C:\Program Files\Microsoft Visual Studio 9.0\Xml\Schemas
Quelle:
http://weblogs.asp.net/sweinstein/archive/2004/08.aspx
http://weblogs.asp.net/sweinstein/archive/2004/08.aspxE
Möchte man die gleiche Datei mehrfach installieren, sprich in verschiedene Verzeichnisse, so stößt man schnell auf Fehlermeldungen verschiedenster Art.
Eine mögliche Umsetzung ist folgende:
<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'>
<Product>
<Directory Id='TARGETDIR' Name='SourceDir'>
<Directory Id='ProgramFilesFolder'>
<Directory Id='COMPANYFOLDER' Name='$(var.CompanyName)' />
</Directory>
</Directory>
<ComponentGroup Id="Saar_A0_Quer.mxt">
<Component Id="Saar_A0_Quer.mxt" Directory="APPLICATIONFOLDERTEMPLATEARCGIS" Guid="77B26FE2-607B-41D6-939E-2600F350F031">
<File Id="Saar_A0_Quer.mxt" KeyPath="yes" Source="$(var.Path_DataTemplates)\Saar_A0_Quer.mxt" />
</Component>
<Component Id="ArcGisCopy_Saar_A0_Quer.mxt" Directory="ARCGISROOTTEMPLATESPROJECT1" Guid="77B26FE2-607B-41D6-939E-2600F350F032">
<File Id="ArcGisCopy_Saar_A0_Quer.mxt" KeyPath="yes" Source="$(var.Path_DataTemplates)\Saar_A0_Quer.mxt" />
</Component>
</ComponentGroup>
<Feature Id='FeatureDesktop' Title='Desktopinstallation' Level='30' Display='expand' >
<ComponentGroupRef Id='Saar_A0_Quer.mxt' />
</Feature>
</Product>
</Wix>
Fehler:
heat.exe : warning HEAT5151 : Could not harvest data from a file that was expected to be an assembly: C:\Projekte\…\Core.dll. If this file is not an assembly you can ignore this warning. Otherwise, this error detail may be helpful to diagnose the failure: Could not load file or assembly ‚Commons.UI, Version=9.3.0.978, Culture=neutral, PublicKeyToken=ccd18cc03af5b919‘ or one of its dependencies. The system cannot find the file specified.
Ursache:
Die Datei referenziert eine Fremd-DLL, die nicht im gleichen Verzeichnis und nicht im GAC (Global Assembly Cache) zu finden ist.
Lösung:
Alle Referenzen müssen entweder im GAC oder im gleichen Verzeichnis wie die zu extrahierende Datei liegen.
Benutzt man das UI Set WixUI_Advanced, so muss man ein Property namens ApplicationFolderName definieren, welches dann im Dialog zur Verzeichnisauswahl angezeigt wird.
Die Definition eines einfachen Pfades macht man wie gewohnt:
<Property Id='ApplicationFolderName' Value='MeinProgramm' />
Schwieriger wirds, wenn man den Wert eines anderen Properties verwenden will.
So …
<Directory Id='TARGETDIR' Name='SourceDir'>
<Directory Id='ProgramFilesFolder'>
<Directory Id='APPFOLDER' Name='$(var.ProgrammName)'>
</Directory>
</Directory>
</Directory>
<Property Id='ApplicationFolderName' Value='[APPFOLDER]' />
… funktionierts leider nicht. Properties können nur über eine CustomAction zugewiesen werden. Bei mir war der Wert aber immer leer. Wer das hinbekommt darf mir gern einen Tipp geben!
Ich habs so gelöst:
<Directory Id='TARGETDIR' Name='SourceDir'>
<Directory Id='ProgramFilesFolder'>
<Directory Id='APPFOLDER' Name='$(var.ProgrammName)'>
</Directory>
</Directory>
</Directory>
<Property Id='ApplicationFolderName' Value='$(var.ProgrammName)' />
Nicht ganz so sauber, tut aber genauso.
Was aber, wenn man mehrere Pfade angeben möchte?
Dann sieht es so aus:
<Property Id='ApplicationFolderName' Value='$(var.CompanyName)\$(var.InstallDirectoryName)\$(var.ProductVersion)' />