Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.12.27;
Скачать: CL | DM;

Вниз

Посоветуйте как лучше поступить.   Найти похожие ветки 

 
DVM ©   (2009-10-24 14:16) [0]

Мне надо сделать сделать порядка 20 билдов одной и тоже программы, различающихся лишь тем, что в одном из модулей будет прошита разная константа у всех. Ну типа серийного номера, но не серийный номер, используется не для защиты, а скорее для информационных целей. Константа потом будет использована в программе.

Билдить все руками неохота, потом лучше день потерять зато потом за час долететь.

Как такое лучше провернуть? Как бы вы поступили? Для меня предпочтительнее компилировать бат файлом, вопрос в том как лучше менять значение константы, в остальном все понятно.


 
Упс   (2009-10-24 14:24) [1]

В файле настроек?


 
Riply ©   (2009-10-24 14:26) [2]

> [0] DVM ©   (24.10.09 14:16)
> Билдить все руками неохота, потом лучше день потерять зато потом за час долететь.

> Как такое лучше провернуть? Как бы вы поступили?
> Для меня предпочтительнее компилировать бат файлом, вопрос в том как лучше менять значение константы, в остальном все понятно.

Добавить DEFINE в командну строку ?


 
Pavia ©   (2009-10-24 14:27) [3]

Инклюдишь файл со своей константой. Через "copy con" меняешь константу.


 
Суслик_   (2009-10-24 14:45) [4]


> Pavia ©   (24.10.09 14:27) [3]
>
> Инклюдишь файл со своей константой. Через "copy con" меняешь
> константу.

+1

я так и дела.

если константа числовая, то можно в бинарнике править. надо только придумать, как найти место. можно db инструкции использовать.


 
DVM ©   (2009-10-24 14:48) [5]


> Упс   (24.10.09 14:24) [1]


> В файле настроек?

В файле настроек чего? Моей программы? Если так, этот вариант отпадает. Этой константе незачем быть "на виду".


> Riply ©   (24.10.09 14:26) [2]


> Добавить DEFINE в командну строку ?

О таком варианте уже думал, просто хотел узнать про альтернативы.


> Pavia ©   (24.10.09 14:27) [3]


> Инклюдишь файл со своей константой. Через "copy con" меняешь
> константу.

Этот вариант тоже второй который пришел в голову.

Хорошо спасибо, собственно как я и хотел либо возьму [2] либо [3]


 
Дмитрий Белькевич   (2009-10-24 14:59) [6]

Как мы делаем, в батнике: dcc32.exe any.dpr -B -DCOPY%1

ну а далее - либо руками номера подставляешь параметр батника, либо вызываешь из другого батника:

for /L %%i IN (1,1,3) DO call BuildPackage.bat %%i

В самом проекте - скопипащенные дефайны.


 
DVM ©   (2009-10-24 15:01) [7]


> Дмитрий Белькевич   (24.10.09 14:59) [6]

Спасибо


 
XXL   (2009-10-24 15:02) [8]

... и даже fc /b элементарно выявит различия между билдами :)


 
DVM ©   (2009-10-24 15:05) [9]


> XXL   (24.10.09 15:02) [8]


> ... и даже fc /b элементарно выявит различия между билдами
> :)

А и пусть.
Во-первых, никому и в голову не придет сравнивать.
Во-вторых, маловероятно, что два разных билда окажутся в одних руках.
В третьих, да ради бога, пусть сравнивают, замена или подмена этой константы никаких преимуществ не дает. Это не защита.


 
Суслик_   (2009-10-24 17:41) [10]

у VmProtect есть т.н. водяные знаки - заносит в программу уникальные коды, которые в общем случае трудно вычистить. В результате по бинарнику можно понять владельца.


 
Омлет ©   (2009-10-24 21:24) [11]

Имеется скрипт StringReplaceInFile.vbs

On Error Resume Next
fileName = WScript.arguments(0)
patrn = WScript.arguments(1)
replStr = WScript.arguments(2)

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objShellApp = CreateObject("Shell.Application")
LogPath = objFSO.GetParentFolderName(WScript.ScriptFullName)

replaceTextInFile fileName, patrn, replStr

Function replaceTextInFile(FilePath, patrn, replStr)
   On Error Resume Next
   Set TFile = objFSO.OpenTextFile(FilePath, 1)
   fileText = TFile.ReadAll
   fileText = ReplaceTest(fileText, patrn, replStr)
   Set WFile = objFSO.OpenTextFile(FilePath, 2)
   WFile.WriteLine fileText
   WFile.Close
End Function

Function ReplaceTest(src_str, patrn, replStr)
   Dim regEx
   Set regEx = New RegExp
   regEx.Pattern = patrn
   regEx.Global = False
   regEx.IgnoreCase = True
   ReplaceTest = regEx.Replace(src_str, replStr)
End Function


Он вызывается из батника с передачей параметров: путь до файла, в котором заменять; текст, который заменяем; текст, на который заменяем.
Я брал файл-шаблон, где на нужном месте было что-то вроде %PARAM_X%, копировал его в нужную папку, заменял в нем %PARAM_X% на необходимый текст и компилировал.
И накаких проблем.


 
Омлет ©   (2009-10-24 21:30) [12]

objShellApp и LogPath по ходу не нужны, при последней правке забыл убрать.



Страницы: 1 вся ветка

Текущий архив: 2009.12.27;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.013 c
3-1227877267
Xmen
2008-11-28 16:01
2009.12.27
Таблица из текстового файла


15-1256553697
Урсулапов_
2009-10-26 13:41
2009.12.27
Свисток арбитра в руках болельщика


3-1232472889
RustB
2009-01-20 20:34
2009.12.27
ADO, access, и как прочитать результат запроса.


4-1226217617
Riply
2008-11-09 11:00
2009.12.27
Строение "подструктуры" HANDLE_TABLE


6-1208506264
VK
2008-04-18 12:11
2009.12.27
передача файлов по сети