В NewUserActivity переопределите метод OnBackPressed (), затем вызовите финиш; убить текущую активность; См. Пример реализации ниже:
@Override public void onBackPressed () {
killActivity();
})
.setNegativeButton("No", null)
.show();
}
private void killActivity() {
finish();
}
Это - код, который я закончил тем, что использовал. Я в основном портировал примеры из MSDN для использования WiX.
Примечание: Это определенное решение только для дополнения Word 2007, но случай для Excel очень похож. Просто измените проверки реестра/компонента и ключи/значения в соответствии с вышеупомянутой Статьей MSDN.
Для выполнения дополнений с полным доверием оно должно быть добавлено к Списку Включения для текущего пользователя. Единственный способ сделать это надежно с пользовательским действием. Это - порт пользовательского действия в статье к новой Основе Инструментов Развертывания, включенной с WiX.
Для использования его создайте новый проект DTF под названием VSTOCustomAction и добавьте CustomAction.cs.
CustomAction.csusing 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 для установки дополнения. Сошлитесь на него из своего основного .wcs файла с
<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>
Надеюсь, что это экономит некоторое время для кого-то там.
Я удивлен, что никто не ответил на это... Я Дополнения исследования, таким образом, я просто выведу несколько ссылок здесь. Я не уверен Вы, если Вы уже нашли решение для того, что Вы искали, но это может помочь другим, ищущим как я:
ответ устанавливает дополнения vsto 3.0 для офиса, действительно работает на wix, но я ничего не знаю об этом WixOfficeExtension? Чтобы я получил его, работа не была простой задачей, и Вам нужны довольно мало вещей получить выполненный правильно:
Шаг 1. Я действительно хочу использовать VSTO?
Шаг 2. Хорошо VSTO является правильным чтением здесь:
От MS Misha Shneerson - Развертывающий VSTO на 2007: http://blogs.msdn.com/mshneer/archive/2006/01/05/deployment-articles.aspx информация о Microsoft Deployment здесь: http://msdn.microsoft.com/en-us/library/bb386179.aspx#
Шаг 3. Я должен установить больше чем одно дополнение за один раз или хотеть использовать причину WIX, я хочу это? Переходят к шагу 4.
, Если не используют установщик в Visual Studio и делают Вашу жизнь легкой... Вот установщик установки Microsofts, самый легкий путь: http://msdn.microsoft.com/en-us/library/cc563937.aspx
Идет сюда для нахождения хорошей сводки подсказок/идей. Я просматриваю форумы для справки также здесь, очень хорошего сайта. (хорошо полученный в итоге, приспособленный для перспективы, но применимый к офису): http://www.outlookcode.com/article.aspx?ID=42
Шаг 4. Wix
A) Знакомится с этим, Вам нужен он: Ключи реестра для Дополнений Прикладного уровня http://msdn.microsoft.com/en-us/library/bb386106.aspx#
Использование B) установка, основанная на объектах из установщика Windows в Visual Studio для генерации файла MSI.
Тест C), что msi и удостоверяются Ваши дополнительные работы с помощью microsoft MSI. Доверяйте мне, что многие проблемы берут Вас большая часть времени здесь.
Выполнение D) dark.exe (в wix мусорном ведре) и смотрит на настройки реестра, которые были созданы для выходного файла.
E) Добавляют эти настройки реестра в Ваш wix файл.
- я действительно находил этот блог немного полезным, но это было для com дополнений для Excel: http://matthewrowan.spaces.live.com/blog/cns!CCB05A30BCA0FF01!143.entry
Выполнение F) и развертываются.
Примечание: Я добавлю больше здесь, поскольку я нахожу больше здесь. Я все еще изучаю Wix и что я могу сделать с ним с точки зрения дополнений, и т.д. Wix является большим, дополнительное развертывание Office является королевской болью.