这可能听起来像是一个虚拟问题,但我想处理使用Wix生成的msi文件的参数。我在VS2010中开发了Visual C ++程序,例如
msiexec /i setup.exe IP="192.168.2.1" PORT="9999"
我想访问那些参数IP和PORT,并将它们写在文本文件中:
{
"IP":"192.168.2.1",
"PORT":"9999"
}
这可能在Wix中吗?如果不是这样的话。
答案 0 :(得分:1)
我相信有办法做到这一点,虽然我自己没有这样做。
如果您将参数传递给msiexec,如下所示:
msiexec /i setup.exe CUSTOMPROPIP="192.168.1.1" CUSTOMPROPPORT="9999"
然后应该在msi包然后可以解析的属性列表中设置该属性。然后,您可以创建一个自定义操作来处理这些值,它可以将文件写入磁盘。
<Binary Id="SetupCA" SourceFile="SetupCA.CA.dll" />
<CustomAction Id="WRITEFILETODISK" Execute="immediate" BinaryKey="SetupCA" DllEntry="WriteFileToDisk" />
确保您在安装序列中有此自定义操作...
<InstallExecuteSequence>
<Custom Action="WRITEFILETODISK" Sequence="2" />
...
</InstallExecuteSequence>
您将需要一个自定义操作项目来创建此SetupCA.CA.dll。自定义操作的代码类似于:
namespace SetupCA
{
public class CustomActions
{
[CustomAction]
public static ActionResult WriteFileToDisk(Session session)
{
session.Log("Begin WriteFileToDisk"); // This is useful to see when it is firing through the log file created during install with /l*vx parameter in msiexec
// Do work here...
string ipaddress = session["CUSTOMPROPIP"];
string ipport = session["CUSTOMPROPPORT"];
session.Log("Ending WriteFileToDisk");
return ActionResult.Success;
}
}
}