WiX。私は3つのディレクトリのうちの1つにインストールする必要があるプラグインのみを書きます。したがって、私は、カスタムダイアログを作成し、チェーンに挿入:なぜINSTALLFOLDERプロパティがRadioButtonGroupを通じて変更されていないのですか?
これは、このダイアログの私のコードです:私はSelectInstallDirectory.wxs
ファイルに再びを定義
<?xml version='1.0' encoding='Windows-1252'?>
<!-- SelectInstallDirectory.wxs
© Andrey Bushman, 2016
Dialog window for the install directory selection of AutoCAD extension. -->
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Fragment>
<UI>
<!--<Property Id="DefaultUIFont">DlgFont10</Property>-->
<TextStyle Id="DlgFont10" FaceName="Tahoma" Size="10" />
<TextStyle Id="DlgFont20" FaceName="Tahoma" Size="20" />
<TextStyle Id="DlgFont10_important" FaceName="Tahoma" Size="10" Red="255" Green="0" Blue="0"/>
<TextStyle Id="DlgTitleFont" FaceName="Tahoma" Size="10" Bold="yes" />
<!-- I am forced to define the INSTALLFOLDER again because SelectInstallDirectory dialog
doesnt see this property. -->
<Property Id="INSTALLFOLDER" Value="$(env.ProgramData)\Autodesk\ApplicationPlugins\ProxyTools.bundle\"/>
<!--This dialog selects the install directory through the RadioButton items.-->
<Dialog Id="SelectInstallDirectory" Title="AutoCAD extension location"
NoMinimize="yes" Width="400" Height="270">
<Control Id="TitleImage" Type="Bitmap" X="0" Y="0" Width="400" Height="65" Text="TitleImageFile">
<Binary Id="TitleImageFile" SourceFile="SelectInstallDirectory_banner.jpg"/>
</Control>
<Control Id="TitleText" Type="Text" X="60" Y="20" Width="400" Height="35"
Transparent="yes" NoPrefix="yes">
<Text>{\DlgFont20}Proxy Tools for AutoCAD</Text>
</Control>
<Control Id="Title" Type="Text" X="5" Y="85" Width="300" Height="15"
Transparent="yes" NoPrefix="yes">
<Text>Select the target directory for the AutoCAD extension installing:</Text>
</Control>
<Control Id="rbgrPath" Type ="RadioButtonGroup"
X="5" Y="100" Width="500" Height="100" Property="INSTALLFOLDER">
<RadioButtonGroup Property="INSTALLFOLDER">
<RadioButton
Text="[ProgramFilesFolder]Autodesk\ApplicationPlugins\ProxyTools.bundle\"
Value="[ProgramFilesFolder]Autodesk\ApplicationPlugins\ProxyTools.bundle\"
Height="13" Width="500" X="5" Y="5"/>
<RadioButton
Text="$(env.ProgramData)\Autodesk\ApplicationPlugins\ProxyTools.bundle\"
Value="$(env.ProgramData)\Autodesk\ApplicationPlugins\ProxyTools.bundle\"
Height="13" Width="500" X="5" Y="20"/>
<RadioButton
Text="$(env.AppData)\Autodesk\ApplicationPlugins\ProxyTools.bundle\"
Value="$(env.AppData)\Autodesk\ApplicationPlugins\ProxyTools.bundle\"
Height="13" Width="500" X="5" Y="35"/>
</RadioButtonGroup>
</Control>
<Control Id="warning_acad2012" Type="Text" X="5" Y="175" Width="100" Height="30"
Transparent="yes" NoPrefix="yes">
<Text>{\DlgTitleFont}WARNING</Text>
</Control>
<Control Id="warning_acad2012_text" Type="Text" X="10" Y="190" Width="380" Height="40"
Transparent="yes" NoPrefix="yes">
<Text>{\DlgFont10_important}Don't select the "$(env.ProgramData)\Autodesk\ApplicationPlugins\ProxyTools.bundle\" variant if you will use AutoCAD 2012, because its bundle-autoloader don't monitor of that directory.</Text>
</Control>
<Control Id="Back" Type="PushButton" X="205" Y="243" Width="70"
Height="17" Default="no" Text="<< Previous">
<Publish Event="NewDialog" Value="LicenseAgreementDlg">1</Publish>
</Control>
<Control Id="Install" Type="PushButton" X="280" Y="243" Width="56"
Height="17" Default="yes" Text="Install">
<Publish Event="NewDialog" Value="SetupTypeDlg">INSTALLFOLDER</Publish>
</Control>
<Control Id="Cancel" Type="PushButton" X="340" Y="243" Width="56" Height="17"
Default="no" Text="Cancel">
<Publish Event="SpawnDialog" Value="CancelDlg">1</Publish>
</Control>
</Dialog>
</UI>
</Fragment>
</Wix>
ご注意くださいINSTALLFOLDER
ディレクトリです。私のダイアログにはINSTALLFOLDER
プロパティが他のファイルで定義されていると表示されません(下図参照)。それは正しくですか? Product
要素に
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="$(var.ADSK_LOCATION)">
<Directory Id="Adsk" Name="Autodesk">
<Directory Id="Adsk_Plugins" Name="ApplicationPlugins">
<Directory Id="INSTALLFOLDER" Name="$(var.EXTENSION_FOLDER_NAME)">
<Directory Id="LICENSE" Name="license"/>
<Directory Id="RESOURCES" Name="resources"/>
<Directory Id="HELP" Name="help"/>
<Directory Id="MENU" Name="menu">
<Directory Id="CUI" Name="cui"/>
<Directory Id="CUIX" Name="cuix"/>
</Directory>
<Directory Id="BIN" Name="bin">
<Directory Id="BIN_RU" Name="ru"/>
</Directory>
</Directory>
</Directory>
</Directory>
</Directory>
私はこれを追加しました:
<UI Id="MyWixUI_Mondo">
<UIRef Id="WixUI_Mondo" />
<UIRef Id="WixUI_ErrorProgressText" />
<!-- My dialog for the INSTALLFOLDER value getting. -->
<DialogRef Id="SelectInstallDirectory" />
<Publish Dialog="LicenseAgreementDlg" Control="Next" Event="NewDialog" Value="SelectInstallDirectory" Order="3">LicenseAccepted = "1"</Publish>
<Publish Dialog="SetupTypeDlg" Control="Back" Event="NewDialog" Value="SelectInstallDirectory">1</Publish>
</UI>
今私のカスタムダイアログがチェーン内に存在します。しかし、ダイアログ・ウィンドウでターゲット・ディレクトリーの別のバリアントを選択すると、INSTALLFOLDER
の値は実際には変更されません。
<Feature Id="$(var.SolutionName)" Title="$(var.ProductName)" Description="The complete package." Display='expand'
Level="1" ConfigurableDirectory="INSTALLFOLDER" AllowAdvertise='no' InstallDefault='local' Absent='disallow'
TypicalDefault='install'>
私はそれをどのように修正することができます:私のルートFeature
要素はConfigurableDirectory
プロパティ(私はこのプラグインのデバッグのために、この属性を使用する)ためにその変数の値を使用していますか?