如何从设置的下载链接为WIX设置提供参数

时间:2011-09-22 06:54:17

标签: parameters hyperlink wix wix3.5

我正在尝试执行以下操作:

  • 假设用户名为“annie”的用户已连接到foo.example.com网站
  • 在网站上,我提供了一个下载msi设置的链接(使用WIX 3.5开发)
  • 安装程序会安装一个小程序,在首次启动时会询问登录信息(服务器名称:foo.example.com,用户名:annie,密码)。

由于annie已经连接到foo.example.com,如果服务器名称和用户名是预先填写的,那就太好了。

我知道对于某些远程控制软件(例如NetViewer),您可以向要控制其计算机的人发送邮件邀请。在邮件中,您有一个包含会话编号的链接(例如:https://get.netviewer.com/support/join.php?sinr=502436783&sipw=nv64),它会提示下载客户端软件,启动时会自动填充会话编号。

我不知道他们是怎么做的,但我想你可以在exe文件的末尾轻松附加几个字节(会话号),然后让可执行文件查找额外的尾随字节,这里的区别是因为它不是我完全控制的exe,而是使用WIX开发的MSI文件。

你对如何做到这一点有什么指示吗?

2 个答案:

答案 0 :(得分:3)

解决方案是一个脚本,它使用Windows Installer database API修改MSI Property表中的某些自定义属性。然后,自定义安装对话框上的控件可以使用这些属性。

修改MSI后,您的脚本可以将其作为用户的下载链接提供。

如果您的包使用数字签名,则您的脚本还需要在修改后重新签名包。

没有内置支持,因此您需要自己配置包并编写脚本。

答案 1 :(得分:0)

如果您不希望私钥放在下载网络服务器上,这是另一种方法:

  • 下载msi文件的链接是动态的(例如aspx页面)
  • 此页面在中央数据库中创建一行,将“servername”+“username”链接到唯一标识符,例如“connectid”
  • 页面然后传输msi文件,但将名称更改为“ourprocuct_connectid.msi”
  • 然后,wix设置将OriginalDatabase属性存储在注册表值
  • 首次启动程序时,检查注册表值(如果存在),提取connectid,连接到访问中央数据库的uniquer服务器,并从connectid返回用户名和服务器名称

P!