2011-02-23 72 views
1

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

  1. 什么是最好的方式来确定什么位置的silverlight隔离存储是一个特定的silverlight应用程序?我目前的想法是走在<User>\AppData\LocalLow\Microsoft\Silverlight\is\下的所有文件夹,并找到与我的应用相匹配的id.dat文件。

  2. 我应该用什么框架/语言编写一个程序来执行上面的操作(1),然后删除文件夹的内容?我希望尽可能少的外部依赖;例如,我可以很容易地使用.NET来做到这一点,但是然后我的MSI会要求用户使用.NET来删除一些文件(不幸的是,无法接受)。

对于(2),我想直的Win32应用程序或一个VBScript,但我有没有Win32的经验,我不知道任何障碍的我可能需要如果人们不得不通过跳出于安全原因禁用了vbscript。

回答

1

要确定目录,我只需写一个带有GUID的空文件 - 甚至可以使用程序集GUID。这样你就不必破解文件,你只需要进行一次文件扫描并找到GUID匹配,并且有你的目录。

要做删除操作,你可以使用CScript或VBScript和WScript主机(谷歌那些,你会看到大量的例子)。

+0

我想我应该刚刚问过你的第一个地方= p – 2011-02-25 18:50:48

1

我不知道如何与MSI做到这一点,但扭转这个问题呢?您可以创建Siverlight客户端在启动时检查的服务,根据返回值,客户端可以清除自己的独立存储,而不使用MSI。

当然,这里假定您可以更新Silverlight客户端;如果可以的话,你的问题还不清楚。

相关问题