0

製品のバージョン番号を変数「PRODUCTVERSION」に取得するスクリプトがあります。

PRODUCTVERSION= subprocess.check_output('svnversion c:\sandbox -n', shell=False)

この変数「PRODUCTVERSION」をmsbuildプロパティとしてwixに渡したい。以下は私が試したコードですが、エラーが発生してしまいます、

light.exe : error LGHT0001: Illegal characters in path.    

これが私のスクリプトです、

def build(self,projpath):
    PRODUCTVERSION= subprocess.check_output('svnversion c:\sandbox -n', shell=False)
    arg1 = '/t:Rebuild'
    arg2 = '/p:Configuration=Release'
    arg3 = '/p:Platform=x86'
    arg4 = '/p:ProductVersion=%PRODUCTVERSION%'
    p = subprocess.call([self.msbuild,projpath,arg1,arg2,arg3])

私のwixプロジェクトのプロパティはどこにありますか

<PropertyGroup>
  <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
  <Platform Condition=" '$(Platform)' == '' ">x86</Platform>
  <ProductVersion>$(ProductVersion)</ProductVersion>
  <ProjectGuid>{d559ac98-4dc7-4078-b054-fe0da8363ad0}</ProjectGuid>
  <SchemaVersion>2.0</SchemaVersion>
  <OutputName>myapp.$(ProductVersion)</OutputName>
  <OutputType>Package</OutputType>
  <WixTargetsPath Condition=" '$(WixTargetsPath)' == '' AND '$(MSBuildExtensionsPath32)' != '' ">$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets</WixTargetsPath>
  <WixTargetsPath Condition=" '$(WixTargetsPath)' == '' ">$(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Wix.targets</WixTargetsPath>
  <WixVariables>Version=$(ProductVersion)</WixVariables>
</PropertyGroup>

出力名を「myapp-2.0.PRODUCTVERSION」と表示したいのですが、PRODUCTVERSIONはPythonスクリプトから取得したバージョン番号です。これに対する解決策を見つけるのを手伝ってください。

4

2 に答える 2

2

ドキュメントは、ProductVersionLightがxxxxの形式で何かを期待していることを示唆しています

MSIにバージョンで名前を付けたい場合は、ビルド後のコマンドを使用してファイルの名前を変更してきました。

  <Target Name="AfterBuild">
    <Copy SourceFiles=".\bin\$(Configuration)\$(OutputName).msi" DestinationFiles=".\bin\$(Configuration)\$(OutputName)_v%(myVersionNumer).msi" />
    <Delete Files=".\bin\$(Configuration)\$(OutputName).msi" />
  </Target>
于 2013-03-22T16:32:42.603 に答える
0
def build(self,projpath):
    PRODUCTVERSION = subprocess.check_output('svnversion c:\my path\to svn\ -n', shell=False)
    arg1 = '/t:Rebuild'
    arg2 = '/p:Configuration=Release'
    arg3 = '/p:Platform=x86'
    arg4 = '/p:ProductVersion=%s' %(PRODUCTVERSION)
    proc = subprocess.Popen(([self.msbuild,projpath,arg1,arg2,arg3,arg4]), shell=True, 
                    stdout=subprocess.PIPE) 
    while True:
        line = proc.stdout.readline()                        
        wx.Yield()
        if not line: break
    proc.wait() 

wixprojectでは、上記の引数をMSBuildプロパティとして渡し、ビルド後は、

<Target Name="AfterBuild">
<Copy SourceFiles=".\bin\$(Configuration)\$(OutputName)-$(ProductVersion).msi" DestinationFiles=".\bin\$(Configuration)\$(OutputName)-$(ProductVersion).msi" />
<Delete Files=".\bin\$(Configuration)\$(OutputName).msi" />
</Target>
于 2013-04-03T04:32:10.390 に答える