Frage

Ich möchte ein VSTO 3 Application Level Word 2007 Addin implementieren, die ich mit Visual Studio geschrieben haben 2008. Ich sehe, dass WiX eine Erweiterung namens WixOfficeExtension hat, der es sieht aus wie diese Funktionalität haben könnte, aber ich kann keine finden Dokumentation für sie, und ich kann es seinen Zweck aus dem Quellcode nicht erkennen.

Hat jemand zuvor versucht, und konnten Sie es, ziehen Sie erfolgreich?

War es hilfreich?

Lösung

Dies ist der Code, den ich am Ende mit. Ich portiert grundsätzlich die Beispiele von MSDN WiX zu verwenden.

Hinweis: Diese spezielle Lösung ist nur für einen Word 2007-Addin, aber der Fall für Excel ist sehr ähnlich. Ändern Sie einfach die Registry / Komponente überprüft und Schlüssel / Werte gemäß dem oben erwähnten MSDN Artikel .

Inclusion List Benutzerdefinierte Aktion

Um addins mit vollem Vertrauen zu laufen, muss es für den aktuellen Benutzer die Einschlussliste hinzugefügt werden. Der einzige Weg, dies zuverlässig zu tun ist, mit einer benutzerdefinierten Aktion. Dies ist eine Portierung der benutzerdefinierten Aktion in dem rel="noreferrer"> Artikel Deployment tools Foundation mit WiX enthalten.

Um es zu verwenden, erstellen Sie ein neues Projekt mit dem Namen DTF VSTOCustomAction und CustomAction.cs hinzuzufügen.

CustomAction.cs
using System;
using System.Security;
using System.Security.Permissions;
using Microsoft.Deployment.WindowsInstaller;
using Microsoft.VisualStudio.Tools.Office.Runtime.Security;

namespace VSTOCustomActions
{
    public class CustomActions
    {
        private static string GetPublicKey(Session session)
        {
            return session["VSTOCustomAction_PublicKey"];
        }
        private static string GetManifestLocation(Session session)
        {
            return session["VSTOCustomAction_ManifestLocation"];
        }
        private static void ErrorMessage(string message, Session session)
        {
            using (Record r = new Record(message))
            {
                session.Message(InstallMessage.Error, r);
            }
        }

        [CustomAction]
        public static ActionResult AddToInclusionList(Session session)
        {
            try
            {
                SecurityPermission permission =
                    new SecurityPermission(PermissionState.Unrestricted);
                permission.Demand();
            }
            catch (SecurityException)
            {
                ErrorMessage("You have insufficient privileges to " +
                    "register a trust relationship. Start Excel " +
                    "and confirm the trust dialog to run the addin.", session);
                return ActionResult.Failure;
            }

            Uri deploymentManifestLocation = null;
            if (Uri.TryCreate(GetManifestLocation(session),
                UriKind.RelativeOrAbsolute, out deploymentManifestLocation) == false)
            {
                ErrorMessage("The location of the deployment manifest is missing or invalid.", session);
                return ActionResult.Failure;
            }

            AddInSecurityEntry entry = new AddInSecurityEntry(deploymentManifestLocation, GetPublicKey(session));
            UserInclusionList.Add(entry);

            session.CustomActionData.Add("VSTOCustomAction_ManifestLocation", deploymentManifestLocation.ToString());

            return ActionResult.Success;

        }

        [CustomAction]
        public static ActionResult RemoveFromInclusionList(Session session)
        {
            string uriString = session.CustomActionData["VSTOCustomAction_ManifestLocation"];
            if (!string.IsNullOrEmpty(uriString))
            {
                Uri deploymentManifestLocation = new Uri(uriString);
                UserInclusionList.Remove(deploymentManifestLocation);
            }
            return ActionResult.Success;
        }

    }
}

Wix Fragment

Wir müssen natürlich die tatsächliche WiX-Datei mit dem Addin installieren. Referenz es von Ihrem Haupt .wcs Datei mit

<FeatureRef Id="MyAddinComponent"/>
Addin.wcs
<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Fragment Id="Word2007Fragment">

      <!-- Include the VSTO Custom action  -->
      <Binary Id="VSTOCustomAction" SourceFile="path\to\VSTOCustomAction.dll"/>
      <CustomAction Id="AddToInclusionList" BinaryKey="VSTOCustomAction" DllEntry="AddToInclusionList" Execute="immediate"/>
      <CustomAction Id="RemoveFromInclusionList" BinaryKey="VSTOCustomAction" DllEntry="RemoveFromInclusionList" Execute="immediate"/>

      <!-- Set the parameters read by the Custom action -->
      <!-- 
        The public key that you used to sign your dll, looks something like <RSAKeyValue><Modulus>...</Modulus><Exponent>...</Exponent></RSAKeyValue>
        Take note: There should be no whitespace in the key!
      -->
      <Property Id="VSTOCustomAction_PublicKey"><![CDATA[Paste you public key here]]></Property>
      <CustomAction Id="PropertyAssign_ManifestLocation" Property="VSTOCustomAction_ManifestLocation" Value="[INSTALLDIR]MyAddin.MyAddin.vsto" />

      <!-- Properties to check prerequisites -->
      <Property Id="VSTORUNTIME">
        <RegistrySearch Id="RegistrySearchVsto"
                        Root="HKLM"
                        Key="SOFTWARE\Microsoft\vsto runtime Setup\v9.0.30729"
                        Name="SP"
                        Type="raw"/>
      </Property>
      <Property Id="HASWORDPIA">
        <ComponentSearch Id="ComponentSearchWordPIA"
                         Guid="{816D4DFD-FF7B-4C16-8943-EEB07DF989CB}"/>
      </Property>
      <Property Id="HASSHAREDPIA">
        <ComponentSearch Id="ComponentSearchSharedPIA"
                         Guid="{FAB10E66-B22C-4274-8647-7CA1BA5EF30F}"/>
      </Property>


      <!-- Feature and component to include the necessary files -->
      <Feature Id="MyAddinComponent" Title ="Word 2007 Addin" Level="1" AllowAdvertise="no">
        <ComponentRef Id="MyAddinComponent"/>
        <Condition Level="0"><![CDATA[NOT ((VSTORUNTIME="#1") AND HASSHAREDPIA AND HASWORDPIA)]]></Condition>
      </Feature>

      <DirectoryRef Id="INSTALLDIR">
          <Component Id="MyAddinComponent" Guid="your component guid here">
              <File Name="MyAddin.dll" Source="path\to\MyAddin.dll" />
              <File Name="MyAddin.dll.manifest" Source="path\to\MyAddin.dll.manifest" />
              <File Name="MyAddin.vsto" Source="path\to\MyAddin.vsto" />
              <RegistryKey Root="HKCU"
                  Key="Software\Microsoft\Office\Word\Addins\MyAddin"
                  Action="createAndRemoveOnUninstall">
                <RegistryValue Type="string" Name="FriendlyName" Value="MyAddin Word 2007 Addin" />
                <RegistryValue Type="string" Name="Description" Value="MyAddin Word 2007 Addin" />
                <RegistryValue Type="string" Name="Manifest" Value="[INSTALLDIR]MyAddin.vsto|vstolocal" KeyPath="yes"/>
                <RegistryValue Type="integer" Name="LoadBehavior" Value="3"/>
              </RegistryKey>
          </Component>
      </DirectoryRef>

      <!-- Modify the install sequence to call our custom action -->
      <InstallExecuteSequence>
        <Custom Action="AddToInclusionList" After="InstallFinalize"><![CDATA[(&MyAddinComponent = 3) AND NOT (!MyAddinComponent = 3)]]></Custom>
        <Custom Action="PropertyAssign_ManifestLocation" Before="AddToInclusionList"><![CDATA[(&MyAddinComponent = 3) AND NOT (!MyAddinComponent = 3)]]></Custom>
        <Custom Action="RemoveFromInclusionList" After="InstallFinalize"><![CDATA[(&MyAddinComponent = 2) AND NOT (!MyAddinComponent = 2)]]></Custom>
      </InstallExecuteSequence>
    </Fragment>
</Wix>

Ich hoffe, dass dies einige Zeit für jemanden rettet da draußen.

Andere Tipps

Ich bin überrascht, niemand diese beantwortet hat ... ich Add-In erforscht, so dass ich nur ein paar Links hier abladen. Ich bin nicht sicher, ob Sie die Lösung bereits gefunden haben, was Sie gesucht haben, aber dies kann anderen helfen, wie ich suche:

Die Antwort ist die Installation vsto 3.0 addins für Büro funktioniert für Wix, aber ich nicht etwas über diese WixOfficeExtension wissen? Für mich ist es zum Laufen zu bringen keine einfache Aufgabe war, und Sie müssen ziemlich viel Dinge so richtig ausgeführt zu bekommen:

Schritt 1. Muß ich möchte wirklich eine VSTO verwenden?

Sehen Sie hier: http://social.msdn.microsoft.com/Forums/en -US / vsto / Thema / 3f97705a-6052-4296-A10a-bfa3a39ab4e7 / #) http://social.msdn.microsoft.com/Forums/en-US/vsto/thread/3f97705a-6052-4296-a10a-bfa3a39ab4e7 / #

Schritt 2. Ok VSTO ist hier lesen:

Von MS Misha Shneerson-- Bereitstellen von VSTO 2007: http://blogs.msdn.com/mshneer/archive /2006/01/05/deployment-articles.aspx Microsoft Deployment Infos hier: http://msdn.microsoft.com/en-us/library/bb386179. aspx #

Schritt 3. Muss ich mehr als ein AddIn zu einem Zeitpunkt, installieren oder zu WIX verwenden wollen, weil ich es will? Gehe zu Schritt 4.

Wenn das Installationsprogramm nicht in Visual Studio verwenden und Ihr Leben einfach machen ... Hier ist Microsofts Setup-Installer, einfachste Weg: http://msdn.microsoft.com/ en-us / library / cc563937.aspx

Gehen Sie hier eine gute Zusammenfassung von Tipps / Ideen zu finden. Ich durchsuchen Sie die Foren um Hilfe auch hier, sehr gute Website (gut zusammengefasst, geered für Ausblick aber für Büro). http://www.outlookcode.com/article.aspx?ID=42

Schritt 4. Wix

A) Machen Sie sich mit dieser Sie es brauchen: Registrierungseinträge für Anwendungsebene Add-Ins http://msdn.microsoft.com/en-us/library/bb386106. aspx #

Mit

B) Objekt des Setup anhand von Windows Installer in Visual Studio eine MSI-Datei zu erzeugen.

C) Testen Sie, ob msi und stellen Sie sicher, dass Ihr AddIn der Microsoft MSI arbeitet mit. Vertrauen Sie mir, dass viele der Probleme, nehmen Sie die meiste Zeit hier.

D) Run dark.exe (in wix ist) und werfen Sie einen Blick auf den Registrierungseinstellungen, die für die Ausgabedatei erstellt wurden.

E) Fügen Sie diese Registrierungseinstellungen in Ihrer Wix-Datei.
-I tat dies ein wenig hilfreich Blog finden, aber es war für com Addons für Excel: http://matthewrowan.spaces.live.com/blog/cns!CCB05A30BCA0FF01!143.entry

F) Run und bereitstellen.

Hinweis: Ich werde mehr hier hinzufügen, wie ich mehr finden Sie hier. Ich Wix noch lernen und was ich kann in Form von Add-In mit ihm tun, usw. Wix groß ist, Büro addins Einsatz ein königlicher Schmerz ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top