我有一个通过InstallShield创建的msi安装程序,它将一些文件移动到所需位置,
将一些信息写入注册表并安装VSTO运行时。但是我需要在安装完成后启动随应用程序一起安装的.vsto文件。我可以使用自定义操作吗?如果该文件是.exe文件,那将是相当容易的,但我怎么能启动.vsto文件?
[UPD]
嗯,可能有一个更简单的解决方案:
我可以打电话给这个功能:
public override void Install(IDictionary stateSaver)
来自InstallShield?像这样的东西:
自定义操作 - >在Windows Installer动态链接库中调用函数 - >存储在二进制表=>中
AssemblyFile = \ InclusionListCustomActions.dll
MethodSignature = InclusionListCustomActions.TrustInstaller.Install(但是这里有什么参数?)
答案 0 :(得分:3)
您不应该启动VSTO文件,因为这只会按用户安装。你应该做的是将它添加到你需要的办公应用程序的AddIns注册表项中,并使用| vstolocal属性告诉它不要部署到点击一次缓存。
答案 1 :(得分:0)
您可以按照http://msdn.microsoft.com/en-us/library/cc563937%28v=office.12%29.aspx中描述的步骤操作,您可以在Installshield中复制相同的步骤,复制文件并按指定设置注册表值,在启动Office应用程序时它会自动获取vsto文件
要向包含列表添加信息,您必须编写控制台应用程序,然后从installshield调用控制台应用程序。下面的代码将有助于
string RSA_PublicKey = @"<RSAKeyValue><Modulus></Modulus></RSAKeyValue>";
//get this key from .vsto file
try
{
SecurityPermission permission =
new SecurityPermission(PermissionState.Unrestricted);
permission.Demand();
}
catch (SecurityException)
{
Console.WriteLine(
"You have insufficient privileges to " +
"register a trust relationship. Start Excel " +
"and confirm the trust dialog to run the addin.");
Console.ReadLine();
}
Uri deploymentManifestLocation = null;
var excelPath = YourAPPPath;
if (Uri.TryCreate(excelPath,
UriKind.RelativeOrAbsolute, out deploymentManifestLocation) == false)
{
Console.WriteLine(
"The location of the deployment manifest is missing or invalid.");
Console.ReadLine();
}
if (!File.Exists(excelPath))
{
UserInclusionList.Remove(deploymentManifestLocation);
Console.WriteLine(deploymentManifestLocation.ToString() + "removed from inclusion list");
}
else
{
AddInSecurityEntry entry = new AddInSecurityEntry(
deploymentManifestLocation, RSA_PublicKey);
UserInclusionList.Add(entry);
Console.WriteLine(deploymentManifestLocation.ToString() + "Added to inclusion list");
}