0

C# VSTO を使用して開発した PowerPoint アドイン用の .msi インストーラー ファイルを作成しました。リボン ボタンのクリックでヘルプ ファイル pdf を開く必要があります。ヘルプ ファイル pdf を msi パッケージに埋め込みました。

以下のコードを使用して、ハードコーディングされたパス (アドインがインストールされる既定のパス) を使用して、この機能を実装しました。

private void btnHelp_Click(object sender, RibbonControlEventArgs e)
        {
            string filepath = @"C:\Program Files (x86)\Microsoft\Office\PowerPoint\AddIns\myAddin\HelpFile.pdf";
            string locationToSavePdf = Path.Combine(Path.GetTempPath(), filepath);      
            Process.Start(locationToSavePdf);
        }

しかし、エンド ユーザーがアドインをインストールする場所を変更するとすぐに、これが機能しないことはわかっています。(ユーザーが場所を変更するとすぐに)ヘルプファイルpdfのパスを動的に取得できるように、これを手伝ってくれる人はいますか、それとも他のアプローチがありますか?

どんな助け/提案も大歓迎です。ありがとう。

4

2 に答える 2

0

MSI ファイルを作成していて、最終的な保存先フォルダーを保存したい場合は、レジストリ項目を作成して値を保存できます。その場所のプロパティ名が INSTALLDIR であるとすると、次のようなレジストリ キーを作成します。

RegistryKey Id="MySetupRegKey" Root="HKLM" Key="Software\MyLocation" Action="createAndRemoveOnUninstall"

RegistryValue Id="MySetupRegValue" Type="string" Name="InstallDir" Value="[INSTALLDIR]" /RegistryKey>

山かっこを適切に投稿する方法がわからなかったため、山かっこを省略しました:)

しかし、その場所を読み取ることができます。

于 2014-05-08T18:17:42.443 に答える
0

次のコマンドを使用して、現在実行中のアセンブリ フォルダーの場所を取得できます。

var assemblyInfo = Assembly.GetExecutingAssembly();
var uriCodeBase = new Uri(assemblyInfo.CodeBase);
var helpFileLocation = Path.GetDirectoryName(uriCodeBase.LocalPath) + @"\HelpFile.pdf";
Process.Start(helpFileLocation );
于 2014-05-08T12:01:44.363 に答える