Visual Studio 2015、WIX、MSI-installer。MSIが[CommonAppDataFolder]変数を展開しないのはなぜですか?
まず、ターゲットプラットフォームを取得します。
<!-- Define platform-specific names and locations -->
<?if $(var.Platform) = x64 ?>
<?define PLATFORMPROGRAMFILESFOLDER = "ProgramFiles64Folder" ?>
<?else ?>
<?define PLATFORMPROGRAMFILESFOLDER = "ProgramFilesFolder" ?>
<?endif ?>
はい、私はプリプロセッサにそれを行うが、私は別にx86およびx64のための私のMSIインストーラをビルドするためには、何の問題もなく動作します。このコードは、私のUI
XML要素の内側にあります。私は実行時に同じことをする方法を知らない。 誰かが私を示した場合、私はそれをを行う方法は非常に感謝されるだろうが、私の現在の問題は、他についてです...私は問題を抱えている...
それは動作します:
...
<!-- I am forced to define the INSTALLFOLDER again (inside of 'UI') because
SelectInstallDirectory dialog doesnt see this property. -->
<Property Id="INSTALLFOLDER" Value="$(env.ProgramData)\Autodesk\ApplicationPlugins\ProxyTools.bundle\"/>
...
<RadioButtonGroup Property="INSTALLFOLDER">
<RadioButton
Text="[$(var.PLATFORMPROGRAMFILESFOLDER)]Autodesk\ApplicationPlugins\ProxyTools.bundle\"
Value="[$(var.PLATFORMPROGRAMFILESFOLDER)]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="[AppDataFolder]Autodesk\ApplicationPlugins\ProxyTools.bundle\"
Value="[AppDataFolder]Autodesk\ApplicationPlugins\ProxyTools.bundle\"
Height="13" Width="500" X="5" Y="35"/>
</RadioButtonGroup>
...
は、それが作成されますダイアログ:私が使用して[AppDataFolder]
に問題を持っていない
ご注意...
しかし、$(env.ProgramData)
は、プリプロセッサーによってと評価されます。したがって、私は、実行時に評価値を[CommonAppDataFolder]
に各$(env.ProgramData)\
部分文字列を置き換えるために午前:
...
<!-- I am forced to define the INSTALLFOLDER again (inside of 'UI') because
SelectInstallDirectory dialog doesnt see this property. -->
<Property Id="INSTALLFOLDER" Value="[CommonAppDataFolder]Autodesk\ApplicationPlugins\ProxyTools.bundle\"/>
...
<RadioButtonGroup Property="INSTALLFOLDER">
<RadioButton
Text="[$(var.PLATFORMPROGRAMFILESFOLDER)]Autodesk\ApplicationPlugins\ProxyTools.bundle\"
Value="[$(var.PLATFORMPROGRAMFILESFOLDER)]Autodesk\ApplicationPlugins\ProxyTools.bundle\"
Height="13" Width="500" X="5" Y="5"/>
<RadioButton
Text="[CommonAppDataFolder]Autodesk\ApplicationPlugins\ProxyTools.bundle\"
Value="[CommonAppDataFolder]Autodesk\ApplicationPlugins\ProxyTools.bundle\"
Height="13" Width="500" X="5" Y="20"/>
<RadioButton
Text="[AppDataFolder]Autodesk\ApplicationPlugins\ProxyTools.bundle\"
Value="[AppDataFolder]Autodesk\ApplicationPlugins\ProxyTools.bundle\"
Height="13" Width="500" X="5" Y="35"/>
</RadioButtonGroup>
...
しかし、私は私のMSIを起動すると[CommonAppDataFolder]
が展開されていなかったので、この場合では、私は、errorrを得る:
なぜそれが起こり、どのように修正できますか?
私は、[[CommonAppDataFolder] 'の代わりに'%ProgramData% '環境変数として' [%environmentvariable] 'フォーマット:' [%ProgramData] 'を使用しようとしましたが、私のプロジェクトでは動作しません。 –
'[ProgramData]'も機能しません。どちらの場合もランタイムエラーが発生する:MSIはこれらの名前を展開できない。 –
私は '[CommonAppDataFolder]'のこの問題がなぜ発生するのか分かりませんが、同時に '[AppDataFolder]'の問題はありません... –