NSIS更改XAP文件中存在的配置文件,即silverlight组件构建

时间:2013-02-19 15:22:28

标签: silverlight installer nsis xap

我正在创建一个安装程序,需要更改我的一个silverlight组件的配置文件。 该组件的配置文件位于XAP文件中。有没有办法改变那个配置文件?

2 个答案:

答案 0 :(得分:1)

将您的配置文件与XAP文件并排存放。

  • ../ YourProject.XAP
  • ../ YourProjectSettings.XML

以下代码将下载名为“Settings.xml”的文件,该文件与XAP位于同一目录中,并将其放在隔离存储中。然后,您可以根据需要打开/关闭/解析它。

    private void DownloadFile()
    {
        Uri downloadPath = new Uri(Application.Current.Host.Source, "Settings.xml");
        WebClient webClient = new WebClient();
        webClient.OpenReadCompleted += OnDownloadComplete;
        webClient.OpenReadAsync(downloadPath);
    }

    private void OnDownloadComplete(object sender, OpenReadCompletedEventArgs e)
    {
        if (e.Error != null) throw e.Error;

        using (var isoStorage = IsolatedStorageFile.GetUserStoreForApplication())
        {
            IsolatedStorageFileStream isoStream = isoStorage.CreateFile("CachedSettings.xml");

            const int size = 4096;
            byte[] bytes = new byte[4096];
            int numBytes;

            while ((numBytes = e.Result.Read(bytes, 0, size)) > 0)
                isoStream.Write(bytes, 0, numBytes);

            isoStream.Flush();
            isoStream.Close();
        }
    }

通过这种方式,您的安装程序可以通过条件文件副本与XAP并排添加必要的设置文件。破解XAP是一个黑客攻击;它会使安装程序代码复杂化并使签名的XAP无效。

答案 1 :(得分:0)

我在C#中编写了控制台应用程序,它正在XAP构建中进行这些更改。我只是从我的安装程序中调用该应用程序,因为我在NSIS中找不到任何方法。