如有任何帮助,不胜感激。
我正在编写这个WIX安装程序,以获得MSI在我们的服务器上安装web应用程序。
在我的应用程序,我有这个属性- "WEBDIR"。我在后面的代码中使用这个属性作为目录Id。
我用三种方式设置这个属性。
-
(方法'A')作为在安静模式下调用msiexec时传递的属性。[此处设置为C:Path1]如下所示:
msiexec /quiet /i My.msi WEBDIR="C:Path1" /l*v InstallationLog.log
-
(方法'B')从一个IniFileSearch。我在C: windows中有一个名为MySetup.ini的ini文件,其中关键的WebsitesDir解析值C:Path2。[此处设置为C:Path2]:
<Property Id="WEBDIR"> <IniFileSearch Id="WebsitesDirIni" Name="MySetup.ini" Section="InstallLocations" Key="WebsitesDir" Type="raw"/> </Property>
-
(方法'C')使用默认的目录结构。[此处设置为C:Path3]如下:
<Directory Id="TARGETDIR" Name="SourceDir"> <Directory Id="WEBDIR" Name="Path3"> </Directory> </Directory>
当前的工作方式如下:-当方法'A', 'B'和'C'都设置属性值时,B优先。-当只有方法'A'和'C'设置属性值时,'C'优先。
我想要的是能够将优先级顺序设置为'A'。如果'A',那么'B',否则'C'。
这可能吗?
不,这不可能。如果您想控制顺序,最好的方法是立即自定义操作。因为它需要设置安装程序属性,所以您的自定义操作必须接收安装句柄(建议使用win32 DLL)。
在正常情况下,安装程序将使用这个顺序:
- 命令行值初始化属性
- 目录行设置初始文件夹路径,覆盖命令行值。以后可以通过成本操作(CostFinalize)修改此路径。
- 搜索覆盖初始文件夹路径,但可能被成本操作覆盖。