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

您可以使用以下命令获取当前正在执行的程序集文件夹的位置:

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 回答
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 回答