从MSI中删除silverlight隔离存储的内容

时间:2011-02-23 14:48:28

标签: silverlight winapi windows-installer

我有一个场景,MSI需要删除特定silverlight应用程序的silverlight隔离存储目录的内容。由于我的应用程序的独立存储位置不同于用户到用户/机器到机器,因此MSI无法直接执行此操作,需要调用某种脚本/可执行文件才能完成工作。所以我的问题是两部分

  1. 确定Silverlight隔离存储的位置对于特定的silverlight应用程序的最佳方法是什么?我目前的想法是遍历<User>\AppData\LocalLow\Microsoft\Silverlight\is\下面的所有文件夹,找到与我的应用匹配的id.dat文件。

  2. 我应该使用什么框架/语言来编写上面的程序(1),然后删除文件夹的内容?我希望尽可能少的外部依赖;例如,我可以使用.NET轻松完成此操作,但是我的MSI会要求用户让.NET只删除几个文件(遗憾的是,这是不可接受的)。

  3. 对于(2),我正在思考一个直接的win32应用程序或vbscript,但我没有使用win32的经验,而且我不确定如果有人为了安全性而禁用了vbscript,我可能需要跳过任何障碍的原因。

2 个答案:

答案 0 :(得分:1)

我不确定如何使用MSI,但是如何解决问题呢?您可以创建Siverlight客户端在启动时检查的服务,而不是使用MSI,并且根据返回值,客户端可以清除自己的独立存储。

当然,这假设您可以更新Silverlight客户端;如果可以,你的问题就不清楚了。

答案 1 :(得分:1)

要识别目录,我只需要用GUID写一个空文件 - 甚至可能是程序集GUID。这样你就不必破解文件了,你只需要进行文件扫描并找到GUID匹配,就有你的目录。

要进行删除,您可以使用CScript或VBScript以及WScript主机(Google那些,您将看到大量示例)。