Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wix-如何从以前安装的msi获取用户输入?_Wix_Windows Installer_Wix3.8 - Fatal编程技术网

Wix-如何从以前安装的msi获取用户输入?

Wix-如何从以前安装的msi获取用户输入?,wix,windows-installer,wix3.8,Wix,Windows Installer,Wix3.8,我正在尝试使用WIX3.8进行安装。我可以使用自定义属性来存储自己的输入,但我希望使用以前安装的msi上的输入所在的值。 有没有办法完成这样的事情?在MSI中创建一个自定义操作,首先安装该操作,然后将所需的值/用户项写入文件或注册表。在最终MSI中,从注册表/文件读取值并使用它 下面是一个如何从用户处读取值并更新your app.config的示例,这不是一个苹果对苹果的场景,但这将引导您完成此过程 免责声明:我还没有尝试过这篇博文中提到的内容,但我做了非常类似的事情,发现它有很好的解释,这就

我正在尝试使用WIX3.8进行安装。我可以使用自定义属性来存储自己的输入,但我希望使用以前安装的msi上的输入所在的值。
有没有办法完成这样的事情?

在MSI中创建一个自定义操作,首先安装该操作,然后将所需的值/用户项写入文件或注册表。在最终MSI中,从注册表/文件读取值并使用它

下面是一个如何从用户处读取值并更新your app.config的示例,这不是一个苹果对苹果的场景,但这将引导您完成此过程


免责声明:我还没有尝试过这篇博文中提到的内容,但我做了非常类似的事情,发现它有很好的解释,这就是我发布链接的原因。

在MSI中创建一个自定义操作,首先安装,然后将所需的值/用户条目写入文件或注册表。在最终MSI中,从注册表/文件读取值并使用它

下面是一个如何从用户处读取值并更新your app.config的示例,这不是一个苹果对苹果的场景,但这将引导您完成此过程


免责声明:我还没有尝试过这篇博文中提到的内容,但我做了非常类似的事情,发现它有很好的解释,这就是我发布链接的原因。

一般来说,没有。没有要求Windows Installer软件包记录用户输入的内容。有些确实在注册表中记录了一些信息,您可能会选择在那里查找这些信息


作为替代方案,您可能会发现另一个安装程序可以在没有UI的情况下运行,并且可以通过传递给它的属性进行充分的控制。如果是这样,您可以编写自己的UI(一种方法是自定义WiX Bootrapper应用程序),以在运行安装程序之前收集输入

通常不会。Windows Installer软件包不需要记录用户输入的内容。有些确实在注册表中记录了一些信息,您可能会选择在那里查找这些信息


作为替代方案,您可能会发现另一个安装程序可以在没有UI的情况下运行,并且可以通过传递给它的属性进行充分的控制。如果是这样,您可以编写自己的UI(一种方法是自定义WiX Bootrapper应用程序),以在运行安装程序之前收集输入

要想让你走上正确的方向,请在你的第一个MSI中添加以下内容(当然,首先要使其适应你的需要):

<DirectoryRef Id="INSTALLDIR">
  <Component Id="RegistryEntries" Guid="{0AC76129-F8E2-47D3-B9FD-09B1E10A8541}">
    <RegistryKey Root="HKLM" Key="Software\Company123\App123" Action="create">
      <RegistryValue Type="integer" Name="SomeIntegerValue" Value="1" KeyPath="yes"/>
      <RegistryValue Type="string" Name="UserInput" Value="[USERINPUT]" />
    </RegistryKey>
  </Component>
</DirectoryRef>
安装过程中输入的值/字符串
USERINPUT=
将存储在属性
READREGISTRY

这里是我的第二个msi中的一段日志:

PROPERTY CHANGE: Adding READREGISTRY property. Its value is 'testing registry wef wef wef w'.
根据您的安装情况(可能是每用户或每台机器),您可以将根目录调整为HKCU进行PerUser安装,或将其留给HKLM进行PerMachine安装


有关更多信息,请参阅Wix文档,提示:“如何:在安装过程中写入注册表项”和“如何:在安装过程中读取注册表项”。

为了让您走上正确的方向,请在您的第一个MSI中添加以下内容(当然,首先使其适应您的需要):

<DirectoryRef Id="INSTALLDIR">
  <Component Id="RegistryEntries" Guid="{0AC76129-F8E2-47D3-B9FD-09B1E10A8541}">
    <RegistryKey Root="HKLM" Key="Software\Company123\App123" Action="create">
      <RegistryValue Type="integer" Name="SomeIntegerValue" Value="1" KeyPath="yes"/>
      <RegistryValue Type="string" Name="UserInput" Value="[USERINPUT]" />
    </RegistryKey>
  </Component>
</DirectoryRef>
安装过程中输入的值/字符串
USERINPUT=
将存储在属性
READREGISTRY

这里是我的第二个msi中的一段日志:

PROPERTY CHANGE: Adding READREGISTRY property. Its value is 'testing registry wef wef wef w'.
根据您的安装情况(可能是每用户或每台机器),您可以将根目录调整为HKCU进行PerUser安装,或将其留给HKLM进行PerMachine安装


有关更多信息,请参阅Wix文档,提示:“如何:在安装过程中写入注册表项”和“如何:在安装过程中读取注册表项”。

非常感谢,这正是我要找的。非常感谢,这正是我要找的。