2012-01-30 4 views
1

いくつかのファイルを必要な場所に移動するInstallShieldを介して作成されたmsiインストーラがあります。 はレジストリにいくつかの情報を書き込み、VSTOランタイムをインストールします。しかし、インストールが終わったら、アプリケーションにインストールされている.vstoファイルを起動する必要があります。カスタムアクションでこれを行うことはできますか?そのファイルが.exeファイルだった場合は簡単ですが、どうすれば.vstoファイルを起動できますか? InstallShieldから
public override void Install(IDictionary stateSaver)
: 私はちょうど関数を呼び出すことができます。
[UPD]インストール後に.vstoファイルを起動します。 (InstallShield)

まあ、簡単に解決策があるかもしれ?そのような何か: カスタムアクション(Action)>は、Windowsインストーラのダイナミックリンクで関数を呼び出しlibrary->バイナリテーブルに格納されている=>
AssemblyFile = \ InclusionListCustomActions.dll MethodSignature = InclusionListCustomActions.TrustInstaller.Install(しかし、ここで何が起こっパラメータ?

+0

なぜ.vstoファイルを起動するのですか? –

+0

これはMicrosoft Office Outlook用のプラグインです。以前のバージョンのインストーラはVisual Studioで作成されましたが、何らかの理由でInstallShieldにインストーラを作成するためのツールを変更する必要があります。 VSでは、この操作はCustomActionDataプロパティで行われましたが、私はInstallShieldでどのように行うかわかりません。 – Olter

+0

私はこの件に関して多くのブログ記事を書いています。 Google VSTOの教訓 –

答えて

0

あなたはhttp://msdn.microsoft.com/en-us/library/cc563937%28v=office.12%29.aspxで説明されている手順に従うことができ、ファイルをコピーし、レジストリ値が指定され、オフィスアプリを起動するには、それが自動的にVSTOファイル

をピックアップするように設定された後、あなたは、InstallShieldの同じ手順をコピーすることができます包含リストに情報を追加すると、コンソールapplを作成する必要がありますその後、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");     
      } 
+0

ええ、この記事をありがとうが、問題はまだ存在します。表示されているように、記事には次のようなラベルがあります。 "**プロパティウィンドウで、CustomActionDataプロパティの値を/deploymentManifestLocation="[TARGETDIR]ExcelAddIn.vsto".**に設定してください。"問題は、InstallShieldが、カスタムアクションでこのプロパティを持っていません。 – Olter

+0

あなたは更新されたコードのような何かをすることができます、それは記事のカスタムカスタムアクションについて説明したものの目的を果たすでしょう –

3

VSTOファイルは、ユーザーごとにインストールされるため、起動しないでください。必要なOfficeアプリケーション用のAddInsレジストリキーに追加し、| vstolocal属性を使用して、クリック一度キャッシュに展開しないように指示する必要があります。

関連する問題